2751 Commits

Author SHA1 Message Date
ken
5baa144ddf MFC r291716, r291724, r291741, r291742
In addition to those revisions, add this change to a file that is not in
head:

sys/ia64/include/bus.h:
  	Guard kernel-only parts of the ia64 machine/bus.h header with
  	#ifdef _KERNEL.

  	This allows userland programs to include <machine/bus.h> to get the
  	definition of bus_addr_t and bus_size_t.

  ------------------------------------------------------------------------
  r291716 | ken | 2015-12-03 15:54:55 -0500 (Thu, 03 Dec 2015) | 257 lines

  Add asynchronous command support to the pass(4) driver, and the new
  camdd(8) utility.

  CCBs may be queued to the driver via the new CAMIOQUEUE ioctl, and
  completed CCBs may be retrieved via the CAMIOGET ioctl.  User
  processes can use poll(2) or kevent(2) to get notification when
  I/O has completed.

  While the existing CAMIOCOMMAND blocking ioctl interface only
  supports user virtual data pointers in a CCB (generally only
  one per CCB), the new CAMIOQUEUE ioctl supports user virtual and
  physical address pointers, as well as user virtual and physical
  scatter/gather lists.  This allows user applications to have more
  flexibility in their data handling operations.

  Kernel memory for data transferred via the queued interface is
  allocated from the zone allocator in MAXPHYS sized chunks, and user
  data is copied in and out.  This is likely faster than the
  vmapbuf()/vunmapbuf() method used by the CAMIOCOMMAND ioctl in
  configurations with many processors (there are more TLB shootdowns
  caused by the mapping/unmapping operation) but may not be as fast
  as running with unmapped I/O.

  The new memory handling model for user requests also allows
  applications to send CCBs with request sizes that are larger than
  MAXPHYS.  The pass(4) driver now limits queued requests to the I/O
  size listed by the SIM driver in the maxio field in the Path
  Inquiry (XPT_PATH_INQ) CCB.

  There are some things things would be good to add:

  1. Come up with a way to do unmapped I/O on multiple buffers.
     Currently the unmapped I/O interface operates on a struct bio,
     which includes only one address and length.  It would be nice
     to be able to send an unmapped scatter/gather list down to
     busdma.  This would allow eliminating the copy we currently do
     for data.

  2. Add an ioctl to list currently outstanding CCBs in the various
     queues.

  3. Add an ioctl to cancel a request, or use the XPT_ABORT CCB to do
     that.

  4. Test physical address support.  Virtual pointers and scatter
     gather lists have been tested, but I have not yet tested
     physical addresses or scatter/gather lists.

  5. Investigate multiple queue support.  At the moment there is one
     queue of commands per pass(4) device.  If multiple processes
     open the device, they will submit I/O into the same queue and
     get events for the same completions.  This is probably the right
     model for most applications, but it is something that could be
     changed later on.

  Also, add a new utility, camdd(8) that uses the asynchronous pass(4)
  driver interface.

  This utility is intended to be a basic data transfer/copy utility,
  a simple benchmark utility, and an example of how to use the
  asynchronous pass(4) interface.

  It can copy data to and from pass(4) devices using any target queue
  depth, starting offset and blocksize for the input and ouptut devices.
  It currently only supports SCSI devices, but could be easily extended
  to support ATA devices.

  It can also copy data to and from regular files, block devices, tape
  devices, pipes, stdin, and stdout.  It does not support queueing
  multiple commands to any of those targets, since it uses the standard
  read(2)/write(2)/writev(2)/readv(2) system calls.

  The I/O is done by two threads, one for the reader and one for the
  writer.  The reader thread sends completed read requests to the
  writer thread in strictly sequential order, even if they complete
  out of order.  That could be modified later on for random I/O patterns
  or slightly out of order I/O.

  camdd(8) uses kqueue(2)/kevent(2) to get I/O completion events from
  the pass(4) driver and also to send request notifications internally.

  For pass(4) devcies, camdd(8) uses a single buffer (CAM_DATA_VADDR)
  per CAM CCB on the reading side, and a scatter/gather list
  (CAM_DATA_SG) on the writing side.  In addition to testing both
  interfaces, this makes any potential reblocking of I/O easier.  No
  data is copied between the reader and the writer, but rather the
  reader's buffers are split into multiple I/O requests or combined
  into a single I/O request depending on the input and output blocksize.

  For the file I/O path, camdd(8) also uses a single buffer (read(2),
  write(2), pread(2) or pwrite(2)) on reads, and a scatter/gather list
  (readv(2), writev(2), preadv(2), pwritev(2)) on writes.

  Things that would be nice to do for camdd(8) eventually:

  1.  Add support for I/O pattern generation.  Patterns like all
      zeros, all ones, LBA-based patterns, random patterns, etc. Right
      Now you can always use /dev/zero, /dev/random, etc.

  2.  Add support for a "sink" mode, so we do only reads with no
      writes.  Right now, you can use /dev/null.

  3.  Add support for automatic queue depth probing, so that we can
      figure out the right queue depth on the input and output side
      for maximum throughput.  At the moment it defaults to 6.

  4.  Add support for SATA device passthrough I/O.

  5.  Add support for random LBAs and/or lengths on the input and
      output sides.

  6.  Track average per-I/O latency and busy time.  The busy time
      and latency could also feed in to the automatic queue depth
      determination.

  sys/cam/scsi/scsi_pass.h:
  	Define two new ioctls, CAMIOQUEUE and CAMIOGET, that queue
  	and fetch asynchronous CAM CCBs respectively.

  	Although these ioctls do not have a declared argument, they
  	both take a union ccb pointer.  If we declare a size here,
  	the ioctl code in sys/kern/sys_generic.c will malloc and free
  	a buffer for either the CCB or the CCB pointer (depending on
  	how it is declared).  Since we have to keep a copy of the
  	CCB (which is fairly large) anyway, having the ioctl malloc
  	and free a CCB for each call is wasteful.

  sys/cam/scsi/scsi_pass.c:
  	Add asynchronous CCB support.

  	Add two new ioctls, CAMIOQUEUE and CAMIOGET.

  	CAMIOQUEUE adds a CCB to the incoming queue.  The CCB is
  	executed immediately (and moved to the active queue) if it
  	is an immediate CCB, but otherwise it will be executed
  	in passstart() when a CCB is available from the transport layer.

  	When CCBs are completed (because they are immediate or
  	passdone() if they are queued), they are put on the done
  	queue.

  	If we get the final close on the device before all pending
  	I/O is complete, all active I/O is moved to the abandoned
  	queue and we increment the peripheral reference count so
  	that the peripheral driver instance doesn't go away before
  	all pending I/O is done.

  	The new passcreatezone() function is called on the first
  	call to the CAMIOQUEUE ioctl on a given device to allocate
  	the UMA zones for I/O requests and S/G list buffers.  This
  	may be good to move off to a taskqueue at some point.
  	The new passmemsetup() function allocates memory and
  	scatter/gather lists to hold the user's data, and copies
  	in any data that needs to be written.  For virtual pointers
  	(CAM_DATA_VADDR), the kernel buffer is malloced from the
  	new pass(4) driver malloc bucket.  For virtual
  	scatter/gather lists (CAM_DATA_SG), buffers are allocated
  	from a new per-pass(9) UMA zone in MAXPHYS-sized chunks.
  	Physical pointers are passed in unchanged.  We have support
  	for up to 16 scatter/gather segments (for the user and
  	kernel S/G lists) in the default struct pass_io_req, so
  	requests with longer S/G lists require an extra kernel malloc.

  	The new passcopysglist() function copies a user scatter/gather
  	list to a kernel scatter/gather list.  The number of elements
  	in each list may be different, but (obviously) the amount of data
  	stored has to be identical.

  	The new passmemdone() function copies data out for the
  	CAM_DATA_VADDR and CAM_DATA_SG cases.

  	The new passiocleanup() function restores data pointers in
  	user CCBs and frees memory.

  	Add new functions to support kqueue(2)/kevent(2):

  	passreadfilt() tells kevent whether or not the done
  	queue is empty.

  	passkqfilter() adds a knote to our list.

  	passreadfiltdetach() removes a knote from our list.

  	Add a new function, passpoll(), for poll(2)/select(2)
  	to use.

  	Add devstat(9) support for the queued CCB path.

  sys/cam/ata/ata_da.c:
  	Add support for the BIO_VLIST bio type.

  sys/cam/cam_ccb.h:
  	Add a new enumeration for the xflags field in the CCB header.
  	(This doesn't change the CCB header, just adds an enumeration to
  	use.)

  sys/cam/cam_xpt.c:
  	Add a new function, xpt_setup_ccb_flags(), that allows specifying
  	CCB flags.

  sys/cam/cam_xpt.h:
  	Add a prototype for xpt_setup_ccb_flags().

  sys/cam/scsi/scsi_da.c:
  	Add support for BIO_VLIST.

  sys/dev/md/md.c:
  	Add BIO_VLIST support to md(4).

  sys/geom/geom_disk.c:
  	Add BIO_VLIST support to the GEOM disk class.  Re-factor the I/O size
  	limiting code in g_disk_start() a bit.

  sys/kern/subr_bus_dma.c:
  	Change _bus_dmamap_load_vlist() to take a starting offset and
  	length.

  	Add a new function, _bus_dmamap_load_pages(), that will load a list
  	of physical pages starting at an offset.

  	Update _bus_dmamap_load_bio() to allow loading BIO_VLIST bios.
  	Allow unmapped I/O to start at an offset.

  sys/kern/subr_uio.c:
  	Add two new functions, physcopyin_vlist() and physcopyout_vlist().

  sys/pc98/include/bus.h:
  	Guard kernel-only parts of the pc98 machine/bus.h header with
  	#ifdef _KERNEL.

  	This allows userland programs to include <machine/bus.h> to get the
  	definition of bus_addr_t and bus_size_t.

  sys/sys/bio.h:
  	Add a new bio flag, BIO_VLIST.

  sys/sys/uio.h:
  	Add prototypes for physcopyin_vlist() and physcopyout_vlist().

  share/man/man4/pass.4:
  	Document the CAMIOQUEUE and CAMIOGET ioctls.

  usr.sbin/Makefile:
  	Add camdd.

  usr.sbin/camdd/Makefile:
  	Add a makefile for camdd(8).

  usr.sbin/camdd/camdd.8:
  	Man page for camdd(8).

  usr.sbin/camdd/camdd.c:
  	The new camdd(8) utility.

  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  r291724 | ken | 2015-12-03 17:07:01 -0500 (Thu, 03 Dec 2015) | 6 lines

  Fix typos in the camdd(8) usage() function output caused by an error in
  my diff filter script.

  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  r291741 | ken | 2015-12-03 22:38:35 -0500 (Thu, 03 Dec 2015) | 10 lines

  Fix g_disk_vlist_limit() to work properly with deletes.

  Add a new bp argument to g_disk_maxsegs(), and add a new function,
  g_disk_maxsize() tha will properly determine the maximum I/O size for a
  delete or non-delete bio.

  Submitted by:	will
  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r291742 | ken | 2015-12-03 22:44:12 -0500 (Thu, 03 Dec 2015) | 5 lines

  Fix a style issue in g_disk_limit().

  Noticed by:	bdrewery

  ------------------------------------------------------------------------

Sponsored by:	Spectra Logic
2015-12-16 19:01:14 +00:00
trasz
e1055c772b MFC r282213:
Add kern.racct.enable tunable and RACCT_DISABLED config option.
The point of this is to be able to add RACCT (with RACCT_DISABLED)
to GENERIC, to avoid having to rebuild the kernel to use rctl(8).

MFC r282901:

Build GENERIC with RACCT/RCTL support by default.  Note that it still
needs to be enabled by adding "kern.racct.enable=1" to /boot/loader.conf.

Note those two are MFC-ed together, because the latter one changes the
name of RACCT_DISABLED option to RACCT_DEFAULT_TO_DISABLED.  Should have
committed the renaming separately...

Relnotes:	yes
Sponsored by:	The FreeBSD Foundation
2015-06-21 06:28:26 +00:00
nyan
f42424055b MFC: r272492
Merge pc98's machdep.c into i386/i386/machdep.c.
2014-12-23 12:13:31 +00:00
jhb
71f9e38fa2 MFC 271405,271408,271409,272658:
MFamd64: Use initializecpu() to set various model-specific registers on
AP startup and AP resume (it was already used for BSP startup and BSP
resume).
2014-12-22 19:53:55 +00:00
jhb
2b345a08ed MFC 260557,271076,271077,271082,271083,271098:
- Remove spaces from boot messages when we print the CPU ID/Family/Stepping
- Move prototypes for various functions into out of C files and into
  <machine/md_var.h>.
- Reduce diffs between i386 and amd64 initcpu.c and identcpu.c files.
- Move blacklists of broken TSCs out of the printcpuinfo() function
  and into the TSC probe routine.
- Merge the amd64 and i386 identcpu.c into a single x86 implementation.
2014-12-22 18:40:59 +00:00
nyan
562d29cc36 MFC: r272258
- Cosmetic changes.
  - Reduce diffs against i386.

MFC: 272259
  MFi386: Enable QUOTA, PRINTF_BUFR_SIZE and puc.
2014-11-03 11:21:43 +00:00
jhb
bdcad19a9a MFC 261781:
Don't waste a page of KVA for the boot-time memory test on x86.  For amd64,
reuse the first page of the crashdumpmap as CMAP1/CADDR1.  For i386,
remove CMAP1/CADDR1 entirely and reuse CMAP3/CADDR3 for the memory test.
2014-06-27 17:22:18 +00:00
emaste
b0519089ed MFC r258135: x86: Allow users to change PSL_RF via ptrace(PT_SETREGS...)
Debuggers may need to change PSL_RF. Note that tf_eflags is already stored
  in the signal context during signal handling and PSL_RF previously could
  be modified via sigreturn, so this change should not provide any new
  ability to userspace.

  For background see the thread at:
  http://lists.freebsd.org/pipermail/freebsd-i386/2007-September/005910.html

  Reviewed by:	jhb, kib

Sponsored by:	DARPA, AFRL
Approved by:	re (gjb)
2013-11-25 15:58:48 +00:00
jkim
28a0f6da76 MFi386: r254619
Reimplement atomic_load_acq_64() and atomic_store_rel_64() for i386.

Noticed by:	tinderbox
2013-08-22 16:39:59 +00:00
pjd
ae1f4cb9ce Add process descriptors support to the GENERIC kernel. It is already being
used by the tools in base systems and with sandboxing more and more tools
the usage should only increase.

Submitted by:	Mariusz Zaborski <oshogbo@FreeBSD.org>
Sponsored by:	Google Summer of Code 2013
MFC after:	1 month
2013-08-18 10:21:29 +00:00
jeff
de4ecca213 Replace kernel virtual address space allocation with vmem. This provides
transparent layering and better fragmentation.

 - Normalize functions that allocate memory to use kmem_*
 - Those that allocate address space are named kva_*
 - Those that operate on maps are named kmap_*
 - Implement recursive allocation handling for kmem_arena in vmem.

Reviewed by:	alc
Tested by:	pho
Sponsored by:	EMC / Isilon Storage Division
2013-08-07 06:21:20 +00:00
obrien
7999076e3e Back out r253779 & r253786. 2013-07-31 17:21:18 +00:00
obrien
721ce839c7 Decouple yarrow from random(4) device.
* Make Yarrow an optional kernel component -- enabled by "YARROW_RNG" option.
  The files sha2.c, hash.c, randomdev_soft.c and yarrow.c comprise yarrow.

* random(4) device doesn't really depend on rijndael-*.  Yarrow, however, does.

* Add random_adaptors.[ch] which is basically a store of random_adaptor's.
  random_adaptor is basically an adapter that plugs in to random(4).
  random_adaptor can only be plugged in to random(4) very early in bootup.
  Unplugging random_adaptor from random(4) is not supported, and is probably a
  bad idea anyway, due to potential loss of entropy pools.
  We currently have 3 random_adaptors:
  + yarrow
  + rdrand (ivy.c)
  + nehemeiah

* Remove platform dependent logic from probe.c, and move it into
  corresponding registration routines of each random_adaptor provider.
  probe.c doesn't do anything other than picking a specific random_adaptor
  from a list of registered ones.

* If the kernel doesn't have any random_adaptor adapters present then the
  creation of /dev/random is postponed until next random_adaptor is kldload'ed.

* Fix randomdev_soft.c to refer to its own random_adaptor, instead of a
  system wide one.

Submitted by: arthurmesh@gmail.com, obrien
Obtained from: Juniper Networks
Reviewed by: obrien
2013-07-29 20:26:27 +00:00
nyan
6a699f9f06 MFi386: revision 251039
Use slightly more idiomatic expression to get the address of array.
2013-06-01 12:21:59 +00:00
peter
cec511ab65 Tidy up some CVS workarounds. 2013-05-12 01:53:47 +00:00
gabor
301f6461b7 - Correct mispellings of word resource
Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
2013-04-17 11:47:32 +00:00
glebius
9cf64d6c35 Merge from projects/counters: counter(9).
Introduce counter(9) API, that implements fast and raceless counters,
provided (but not limited to) for gathering of statistical data.

See http://lists.freebsd.org/pipermail/freebsd-arch/2013-April/014204.html
for more details.

In collaboration with:	kib
Reviewed by:		luigi
Tested by:		ae, ray
Sponsored by:		Nginx, Inc.
2013-04-08 19:40:53 +00:00
mav
7c2b81b0e9 Remove all legacy ATA code parts, not used since options ATA_CAM enabled in
most kernels before FreeBSD 9.0.  Remove such modules and respective kernel
options: atadisk, ataraid, atapicd, atapifd, atapist, atapicam.  Remove the
atacontrol utility and some man pages.  Remove useless now options ATA_CAM.

No objections:	current@, stable@
MFC after:	never
2013-04-04 07:12:24 +00:00
attilio
e98f58faf6 MFC 2013-03-02 14:48:41 +00:00
davide
2bf12d0c7c MFcalloutng:
When CPU becomes idle, cpu_idleclock() calculates time to the next timer
event in order to reprogram hw timer. Return that time in sbintime_t to
the caller and pass it to acpi_cpu_idle(), where it can be used as one
more factor (quite precise) to extimate furter sleep time and choose
optimal sleep state. This is a preparatory change for further callout
improvements will be committed in the next days.

The commmit is not targeted for MFC.
2013-02-28 10:46:54 +00:00
attilio
066bbc97b6 Fix other architectures and ZFS.
Sponsored by:	EMC / Isilon storage division
2013-02-21 15:02:36 +00:00
eadler
6a1efe1ad9 Remove support for plip from the GENERIC kernel as no systems in the
last 10 years require this support.

Discussed with:	db
Discussed with:	kib
Reviewed by:	imp
Reviewed by:	jhb
Reviewed by:	-hackers
Approved by:	cperciva (mentor)
2013-02-01 20:17:11 +00:00
imp
57290bbe8a MFi386: Make similar changes that were made to atkbdc in r245315. 2013-01-11 23:42:24 +00:00
nyan
c5bbd70553 MFi386: r232521
Exclude USB drivers (except umass and ukbd) from main kernel image.
2013-01-04 09:52:09 +00:00
des
67e77c00a8 As discussed on -current last October, remove the firewire drivers from
GENERIC.
2013-01-03 14:30:24 +00:00
nyan
beb4c4db63 Reduce diffs against i386. 2012-11-10 13:48:41 +00:00
nyan
8cda8e16a3 Fix some KASSERTs.
They are missing changes from r208833, r227394 and r227442.
2012-11-10 13:41:25 +00:00
nyan
d6f477073b MFi386: r211924
Register an interrupt vector for DTrace return probes.
2012-11-10 13:25:46 +00:00
nyan
2054c9670e Use ANSI prototype to fix build with clang.
MFC after:	1 week
2012-11-10 13:24:33 +00:00
eadler
f3db91bee2 The 'testing memory' patch gets printed too many times
Approved by: cperciva (implicit)
2012-10-22 11:57:26 +00:00
eadler
0b45640988 Explain the upcoming delay by printing a message when the kernel
is about to begin testing memory.

Reviewed by:	dteske, adri
Approved by:	cperciva
MFC after:	1 week
2012-10-22 03:16:39 +00:00
attilio
6997194551 Add an unified macro to deny ability from the compiler to reorder
instruction loads/stores at its will.
The macro __compiler_membar() is currently supported for both gcc and
clang, but kernel compilation will fail otherwise.

Reviewed by:	bde, kib
Discussed with:	dim, theraven
MFC after:	2 weeks
2012-10-09 14:32:30 +00:00
attilio
3212891c92 Reverts r234074,234105,234564,234723,234989,235231-235232 and part of
r234247.
Use, instead, the static intializer introduced in r239923 for x86 and
sparc64 intr_cpus, unwinding the code to the initial version.

Reviewed by:	marius
2012-10-09 12:22:43 +00:00
nyan
12e520c063 MFi386: revision 237445
Commit changes missed from r237435.  Properly calculate the signal
  trampoline addresses after the shared page is enabled.  Handle FreeBSD
  ABIs without shared page support too.

MFi386: revision 238792

  Introduce curpcb magic variable.
2012-09-23 09:13:57 +00:00
gjb
3f013cdf9f Grammar fix: s/NIC's/NICs/
MFC after:	3 days
2012-08-26 01:21:02 +00:00
jhb
fb20c6fee6 Partially revert r217515 so that the mem_range_softc variable is always
present on x86 kernels.  This fixes the build of kernels that include
'device acpi' but do not include 'device mem'.

MFC after:	1 month
2012-07-09 20:42:08 +00:00
kib
7b36a08108 Implement mechanism to export some kernel timekeeping data to
usermode, using shared page.  The structures and functions have vdso
prefix, to indicate the intended location of the code in some future.

The versioned per-algorithm data is exported in the format of struct
vdso_timehands, which mostly repeats the content of in-kernel struct
timehands. Usermode reading of the structure can be lockless.
Compatibility export for 32bit processes on 64bit host is also
provided. Kernel also provides usermode with indication about
currently used timecounter, so that libc can fall back to syscall if
configured timecounter is unknown to usermode code.

The shared data updates are initiated both from the tc_windup(), where
a fast task is queued to do the update, and from sysctl handlers which
change timecounter. A manual override switch
kern.timecounter.fast_gettime allows to turn off the mechanism.

Only x86 architectures export the real algorithm data, and there, only
for tsc timecounter. HPET counters page could be exported as well, but
I prefer to not further glue the kernel and libc ABI there until
proper vdso-based solution is developed.

Minimal stubs neccessary for non-x86 architectures to still compile
are provided.

Discussed with:	bde
Reviewed by:	jhb
Tested by:	flo
MFC after:	1 month
2012-06-22 07:06:40 +00:00
mav
56ef4027fe MFprojects/zfsd:
Generalize and unify ses device description.
2012-05-24 11:20:51 +00:00
iwasaki
31eddd58e3 Add SMP/i386 suspend/resume support.
Most part is merged from amd64.

- i386/acpica/acpi_wakecode.S
Replaced with amd64 code (from realmode to paging enabling code).

- i386/acpica/acpi_wakeup.c
Replaced with amd64 code (except for wakeup_pagetables stuff).

- i386/include/pcb.h
- i386/i386/genassym.c
Added PCB new members (CR0, CR2, CR4, DS, ED, FS, SS, GDT, IDT, LDT
and TR) needed for suspend/resume, not for context switch.

- i386/i386/swtch.s
Added suspendctx() and resumectx().
Note that savectx() was not changed and used for suspending (while
amd64 code uses it).
BSP and AP execute the same sequence, suspendctx(), acpi_wakecode()
and resumectx() for suspend/resume (in case of UP system also).

- i386/i386/apic_vector.s
Added cpususpend().

- i386/i386/mp_machdep.c
- i386/include/smp.h
Added cpususpend_handler().

- i386/include/apicvar.h
- kern/subr_smp.c
- sys/smp.h
Added IPI_SUSPEND and suspend_cpus().

- i386/i386/initcpu.c
- i386/i386/machdep.c
- i386/include/md_var.h
- pc98/pc98/machdep.c
Moved initializecpu() declarations to md_var.h.

MFC after:	3 days
2012-05-18 18:55:58 +00:00
attilio
0b98e6d835 Clean up the intr* MD KPI from the SMP dependency, removing a cause of
discrepancy between modules and kernel, but deal with SMP differences
within the functions themselves.

As an added bonus this also helps in terms of code readability.

Requested by:	gibbs
Reviewed by:	jhb, marius
MFC after:	1 week
2012-04-26 20:24:25 +00:00
nyan
0b8dc3a5af MFi386: revisions 234074 and 234105
- Adding the BSP as an interrupt target directly in cpu_startup().
2012-04-22 04:36:25 +00:00
jhb
1dd88fec2f Move the legacy(4) driver to x86. 2012-03-30 19:10:14 +00:00
ed
619ab2327e Remove pty(4) from our kernel configurations.
As of FreeBSD 8, this driver should not be used. Applications that use
posix_openpt(2) and openpty(3) use the pts(4) that is built into the
kernel unconditionally. If it turns out high profile depend on the
pty(4) module anyway, I'd rather get those fixed. So please report any
issues to me.

The pty(4) module is still available as a kernel module of course, so a
simple `kldload pty' can be used to run old-style pseudo-terminals.
2012-03-21 08:38:42 +00:00
tijl
fee85d364e Copy amd64 sysarch.h to x86 and merge with i386 sysarch.h. Replace
amd64/i386/pc98 sysarch.h with stubs.
2012-03-19 21:57:31 +00:00
tijl
42f636fdcd Copy i386 specialreg.h to x86 and merge with amd64 specialreg.h. Replace
amd64/i386/pc98 specialreg.h with stubs.
2012-03-19 21:34:11 +00:00
tijl
ea1f38e564 Copy i386 psl.h to x86 and replace amd64/i386/pc98 psl.h with stubs. 2012-03-19 21:29:57 +00:00
tijl
2bf580ea66 Copy i386 reg.h to x86 and merge with amd64 reg.h. Replace i386/amd64/pc98
reg.h with stubs.

The tREGISTER macros are only made visible on i386. These macros are
deprecated and should not be available on amd64.

The i386 and amd64 versions of struct reg have been renamed to struct
__reg32 and struct __reg64. During compilation either __reg32 or __reg64
is defined as reg depending on the machine architecture. On amd64 the i386
struct is also available as struct reg32 which is used in COMPAT_FREEBSD32
code.

Most of compat/ia32/ia32_reg.h is now IA64 only.

Reviewed by:	kib (previous version)
2012-03-18 19:06:38 +00:00
nyan
fbebe4e777 - Fix to build a native i386 kernel without the SMP and atpic.
- Merge r232744 changes to pc98.
  (Allow a kernel to be built with 'nodevice atpic'.)
- Move ICU related defines from x86/isa/atpic.c to x86/isa/icu.h and
  use them in x86/x86/intr_machdep.c.

Reviewed by:	jhb
2012-03-16 12:13:44 +00:00
attilio
9906b913d9 Disable the option VFS_ALLOW_NONMPSAFE by default on all the supported
platforms.
This will make every attempt to mount a non-mpsafe filesystem to the
kernel forbidden, unless it is expressely compiled with
VFS_ALLOW_NONMPSAFE option.

This patch is part of the effort of killing non-MPSAFE filesystems
from the tree.

No MFC is expected for this patch.
2012-03-06 20:01:25 +00:00
tijl
ab137477da Copy amd64 ptrace.h to x86 and merge with i386 ptrace.h. Replace
amd64/i386/pc98 ptrace.h with stubs.

For amd64 PT_GETXSTATE and PT_SETXSTATE have been redefined to match the
i386 values. The old values are still supported but should no longer be
used.

Reviewed by:	kib
2012-03-04 20:24:28 +00:00