dragonfly.git
2 years agobsd-family-tree: Sync with FreeBSD.
Sascha Wildner [Wed, 9 Nov 2011 01:53:12 +0000 (02:53 +0100)]
bsd-family-tree: Sync with FreeBSD.

2 years agokernel - Fix lwp_create() kernel corruption and panic in error path
Matthew Dillon [Wed, 9 Nov 2011 00:10:38 +0000 (16:10 -0800)]
kernel - Fix lwp_create() kernel corruption and panic in error path

* We were forgetting to remove the lwp's thread from gd_tdallq, resulting
  in corruption of the queue.

Reported-by: swildner
2 years agokernel - Rearrange page adds in vm_add_new_page()
Matthew Dillon [Tue, 8 Nov 2011 23:41:05 +0000 (15:41 -0800)]
kernel - Rearrange page adds in vm_add_new_page()

* We were previously alternating between the head and tail of the PQ_FREE
  queues when adding new vm pages, but not zeroing the pages being placed
  at the tail.

* Instead of alternating place 1/16 of the new pages on the tail of the
  queue, zero them, and properly mark them PG_ZERO.

* This should reduce physical page fragmentation during early boot when
  drivers need to allocate contiguous low phys-memory pages.

2 years agokernel - Beef up vm_contig allocation checks
Matthew Dillon [Tue, 8 Nov 2011 23:38:16 +0000 (15:38 -0800)]
kernel - Beef up vm_contig allocation checks

* Beef up vm_contig allocation checks by also requiring the PQ_CACHE page
  to not be held or wired or unmanaged, and assert that it is not mapped
  or dirty.

* When utilizing PQ_FREE pages ignore any held pages and assert that
  the pages are not dirty in addition to not having an object.

* Do not clear PG_SBUSY when allocating a page (though it shouldn't be set
  anyway, we still shouldn't unconditionally clear the bit).

2 years agokernel - reformulate some of the pmap code to adhere to the new rules
Matthew Dillon [Tue, 8 Nov 2011 19:44:38 +0000 (11:44 -0800)]
kernel - reformulate some of the pmap code to adhere to the new rules

* hold_count can now be adjusted asynchronously so it cannot be used to
  count the number of pte's in a page table page.  Use wire_count instead.

* On i386 there is no extra wire_count for the page table page mapping itself
  so the pmap_release code should never find a page table page other than the
  page directory page itself.

* Reformulate the *ptep checks in x86-64's pmap_scan() code to avoid races.

* Document why busy pages can sometimes be found in the PQ_FREE queues.

* Document that other than finding a busy page, pages in PQ_FREE should be
  ready to go.

* It is possible for a wired page to wind up on the inactive queue, the
  pageout daemon has to deal with the case by dequeueing it.

2 years agokernel - Add callout_stop_sync()
Matthew Dillon [Tue, 8 Nov 2011 08:29:51 +0000 (00:29 -0800)]
kernel - Add callout_stop_sync()

* Add a synchronous version of callout_stop() which ensure that the
  callout function has completed operation (if it was running) before
  returning.

2 years agokernel - make adjustments to the AHCI driver to try to locate some races
Matthew Dillon [Tue, 8 Nov 2011 08:28:04 +0000 (00:28 -0800)]
kernel - make adjustments to the AHCI driver to try to locate some races

* Change the timeout handling to ensure that the expire mask is properly
  cleared and the timeout has completed processing.

* Panic upon reporting an unknown xa->state.

Reported-by: masterblaster / randy_
2 years agosyscons: Add description for machdep.enable_panic_key.
Sascha Wildner [Tue, 8 Nov 2011 03:23:13 +0000 (04:23 +0100)]
syscons: Add description for machdep.enable_panic_key.

2 years agobtpin.1: Use an item list to silence a mandoc(1) warning.
Sascha Wildner [Tue, 8 Nov 2011 02:46:24 +0000 (03:46 +0100)]
btpin.1: Use an item list to silence a mandoc(1) warning.

2 years agotcplay.3: Remove empty line.
Sascha Wildner [Tue, 8 Nov 2011 02:35:47 +0000 (03:35 +0100)]
tcplay.3: Remove empty line.

2 years agokernel - Fix itimer hard critical section panic
Matthew Dillon [Tue, 8 Nov 2011 00:26:48 +0000 (16:26 -0800)]
kernel - Fix itimer hard critical section panic

* ksignal() needs per-lwp tokens as well as the process token, the existing
  itimer code only gets the process token.

* Flag the itimer signal and issue the ksignal() in the trap's AST code
  instead of trying to issue it from the hardclock.

Reported-by: swildner
2 years agoacpi_cpu: do not apply P_LVLx_LAT rules to latencies returned by _CST
Sascha Wildner [Mon, 7 Nov 2011 18:23:35 +0000 (19:23 +0100)]
acpi_cpu: do not apply P_LVLx_LAT rules to latencies returned by _CST

ACPI specification states that if P_LVL2_LAT >100, then a system
doesn't support C2; if P_LVL3_LAT >1000, then C3 is not supported.

But there are no such rules for Cx state data returned by _CST. If a
state is not supported it should not be included into the return
package. In other words, any latency value returned by _CST is valid,
it's up to the OS and/or user to decide whether to use it.

Submitted-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
Taken-from:    FreeBSD (rev 212549)
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2157>

2 years agoAlso remove formatted binutils220 manpages via 'make upgrade'.
Sascha Wildner [Mon, 7 Nov 2011 11:52:41 +0000 (12:52 +0100)]
Also remove formatted binutils220 manpages via 'make upgrade'.

2 years agoCPUTYPE: Fix Geode, remove C7
John Marino [Mon, 7 Nov 2011 10:57:22 +0000 (11:57 +0100)]
CPUTYPE: Fix Geode, remove C7

Upon further research, I determined that gcc44 doesn't specifically
support the C7 processor which was added yesterday.  It does support the
Geode processor, but the supported instruction sets weren't defined quite
right.

GCC 4.4 will not tune for the Atom nor Corei7 processors.  That support
isn't available until GCC 4.6.

Document: GCC 4.4.6 documentation
 Section: 3.  GCC Command options
    Para: 17. Hardware Models and Configurations
 Subpara: 15. Intel i386 and AMD x86_64 Options

2 years agosys/types.h - include sys/stdint.h for __off_t and __pid_t
Samuel J. Greear [Mon, 7 Nov 2011 07:22:41 +0000 (00:22 -0700)]
sys/types.h - include sys/stdint.h for __off_t and __pid_t

2 years agoCPUTYPE: Add support for Via C7 and AMD Geode (gcc44)
John Marino [Sun, 6 Nov 2011 20:55:09 +0000 (21:55 +0100)]
CPUTYPE: Add support for Via C7 and AMD Geode (gcc44)

2 years agolibmpfr: Upgrade to version 3.1.0 from version 2.4.2
John Marino [Sun, 6 Nov 2011 17:45:11 +0000 (18:45 +0100)]
libmpfr: Upgrade to version 3.1.0 from version 2.4.2

Like libgmp, libmpfr has the ability to tune itself to the cpu used, e.g.
core2, k8, etc.  Currently we are not taking advantage of this situation,
but in the future the CPU_TYPE variable should be examined for tuning
purposes.

libmpfr is a requirement to build gcc-4.4 and later versions.

2 years agoMerge branch 'vendor/MPFR'
John Marino [Sun, 6 Nov 2011 18:59:30 +0000 (19:59 +0100)]
Merge branch 'vendor/MPFR'

2 years agoUpgrade MPFR from 2.4.2-p3 to 3.1.0 on the vendor branch
John Marino [Sun, 6 Nov 2011 16:41:46 +0000 (17:41 +0100)]
Upgrade MPFR from 2.4.2-p3 to 3.1.0 on the vendor branch

2 years agovmstat - Adapt memory limit field for bigger sizes.
Antonio Huete Jimenez [Sun, 6 Nov 2011 10:52:24 +0000 (11:52 +0100)]
vmstat - Adapt memory limit field for bigger sizes.

For some types like filesystem inodes the limit is raised up to
KvaSize, which can be larger than the actual display field size,
so enlarge it a bit.

2 years agoSort some SEE ALSOs in manual pages.
Sascha Wildner [Sat, 5 Nov 2011 22:39:37 +0000 (23:39 +0100)]
Sort some SEE ALSOs in manual pages.

2 years agogprof: silence buildworld errors
John Marino [Sat, 5 Nov 2011 21:50:36 +0000 (22:50 +0100)]
gprof: silence buildworld errors

It seems that every binutils library and application redefines
PACKAGE_BUG REPORT, and the gprof version clashes with the libbfd
version, so it was disabled to avoid redefinition warnings during
buildworld.

2 years agolibgmp: Fix README.DELETED
John Marino [Sat, 5 Nov 2011 21:39:58 +0000 (22:39 +0100)]
libgmp: Fix README.DELETED

An experimental README.DELETED was committed.  Currently the x86 and
x86_64 files are not vendor branch, so their directories should not have
been removed before.

2 years agolibgmp: Upgrade to version 5.0.2
John Marino [Sat, 5 Nov 2011 20:31:30 +0000 (21:31 +0100)]
libgmp: Upgrade to version 5.0.2

The GNU Multiple Precision Arithmetic Library is required for gcc44 and
all newer gcc compilers.  It's alway been built with the "generic" C
files rather than the provided assembly.  It should be possible to build
gmp with a base set of assembly for x86 and x86_64, and even use
more processor-specific assembly if CPU_TYPE is set, but implementing that
will require some more work and a lot of testing.  So for now, gmp is
still built with the much slower (but more portable) C files.

BUGS FIXED
===================
1. Fat builds fixed.
2. Fixed crash for huge multiplies when old FFT_TABLE2 type of parameter
   selection tables' sentinel was smaller than multiplied operands.
3. The solib numbers now reflect the removal of the documented but
   preliminary mpn_bdivmod function; we correctly flag incompatibility
   with GMP 4.3.
4. Many minor bugs related to portability fixed.
5. The support for HPPA 2.0N now works, after an assembly bug fix.
6. A test case type error has been fixed.  The symptom of this bug
   was spurious 'make check' failures.

SPEEDUPS
===================
1.  Multiplication has been overhauled:
    (1) Multiplication of larger same size operands has been improved with
        the addition of two new Toom functions and a new internal function
        mpn_mulmod_bnm1 (computing U * V mod (B^n-1), B being the word
        base. This latter function is used for the largest products,
        waiting for a better Schoenhage-Strassen U * V mod (B^n+1)
        implementation.
    (2) Likewise for squaring.
    (3) Multiplication of different size operands has been improved with
        the addition of many new Toom function, and by selecting
        underlying functions better from the main multiply functions.
2.  Division and mod have been overhauled:
    (1) Plain "schoolbook" division is reimplemented using faster quotient
        approximation.
    (2) Division Q = N/D, R = N mod D where both the quotient and
        remainder are needed now runs in time O(M(log(N))).  This is an
        improvement of a factor log(log(N))
    (3) Division where just the quotient is needed is now O(M(log(Q))) on
        average.
    (4) Modulo operations using Montgomery REDC form now take time O(M(n))
    (5) Exact division Q = N/D by means of mpz_divexact has been improved
        for all sizes, and now runs in time O(M(log(N))).
3.  The function mpz_powm is now faster for all sizes.  Its complexity has
    gone from O(M(n)log(n)m) to O(M(n)m) where n is the size of the modulo
    argument and m is the size of the exponent.  It is also radically
    faster for even modulus, since it now partially factors such modulus
    and performs two smaller modexp operations, then uses CRT.
4.  The internal support for multiplication yielding just the lower n
    limbs has been improved by using Mulders' algorithm.
5.  Computation of inverses, both plain 1/N and 1/N mod B^n have been
    improved by using well-tuned Newton iterations, and wrap-around
    multiplication using mpn_mulmod_bnm1.
6.  A new algorithm makes mpz_perfect_power_p asymptotically faster.
7.  The function mpz_remove uses a much faster algorithm, is better tuned,
    and also benefits from the division improvements.
8.  Intel Atom and VIA Nano specific optimisations.
9.  Multiplication of large numbers has indirectly been sped up through
    better FFT tuning and processor recognition.  Since many operations
    depend on multiplication, there will be a general speedup.
10. Plus hundreds of smaller improvements and tweaks!

NEW FEATURES
===================
1.  New mpz function: mpz_powm_sec for side-channel quiet modexp
    computations.
2.  New mpn functions: mpn_sqr, mpn_and_n, mpn_ior_n, mpn_xor_n,
    mpn_nand_n, mpn_nior_n, mpn_xnor_n, mpn_andn_n, mpn_iorn_n,
    mpn_com, mpn_neg, mpn_copyi, mpn_copyd, mpn_zero.
3.  The function mpn_tdiv_qr now allows certain argument overlap.
4.  Support for fat binaries for 64-bit x86 processors has been added.
5.  A new type, mp_bitcnt_t for bignum bit counts, has been introduced.
6.  More Core i3, i5 an Core i7 processor models are recognised.

2 years agoMerge branch 'vendor/GMP'
John Marino [Sat, 5 Nov 2011 21:30:30 +0000 (22:30 +0100)]
Merge branch 'vendor/GMP'

2 years agoUpgrade GMP from 4.3.2 to 5.0.2 on the vendor branch
John Marino [Wed, 2 Nov 2011 22:54:48 +0000 (23:54 +0100)]
Upgrade GMP from 4.3.2 to 5.0.2 on the vendor branch

2 years agokernel - sysv - Bump semaphore limits
Samuel J. Greear [Sat, 5 Nov 2011 21:01:26 +0000 (15:01 -0600)]
kernel - sysv - Bump semaphore limits

* Bump kern.ipc.semmns, the total number of system semaphores, to 341.
  This count represents an array of 12-byte tracking structures, 341 of these
  consumes a single hardware page.

* Bump kern.ipc.semmni to accomodate the new semmns limit per the PostgreSQL
  calculations from
  http://developer.postgresql.org/pgdocs/postgres/kernel-resources.html

2 years agohammer - Migration to libhammer (step 1/many)
Antonio Huete Jimenez [Sat, 5 Nov 2011 18:00:20 +0000 (19:00 +0100)]
hammer - Migration to libhammer (step 1/many)

- Start using libhammer
- Migrate info directive

2 years agolibhammer - Hook it up into the build.
Antonio Huete Jimenez [Wed, 17 Aug 2011 17:34:13 +0000 (19:34 +0200)]
libhammer - Hook it up into the build.

2 years agolibhammer - Fix a misplaced #endif for the header guardian.
Antonio Huete Jimenez [Sat, 5 Nov 2011 17:49:24 +0000 (18:49 +0100)]
libhammer - Fix a misplaced #endif for the header guardian.

2 years agolibhammer - inodes field was also overlooked.
Antonio Huete Jimenez [Sat, 29 Oct 2011 18:15:45 +0000 (20:15 +0200)]
libhammer - inodes field was also overlooked.

2 years agoieee80211*(9) manual pages: Add some missing #include's.
Sascha Wildner [Sat, 5 Nov 2011 18:07:34 +0000 (19:07 +0100)]
ieee80211*(9) manual pages: Add some missing #include's.

2 years agoSync zoneinfo database with tzdata2011n from munnari.oz.au
Sascha Wildner [Sat, 5 Nov 2011 10:05:28 +0000 (11:05 +0100)]
Sync zoneinfo database with tzdata2011n from munnari.oz.au

australasia:    8.28 -> 8.29
backward:       8.10 -> 8.11
europe:         8.39 -> 8.40
northamerica:   8.50 -> 8.51
zone.tab:       8.50 -> 8.52

* australasia: Fiji has altered the end date for summer time this
    summer, moving it from February to January. It is by no means sure
    it won't shift again, but this does appear to be the current plan.

* backward, europe, zone.tab: Pridnestrovian Moldavian Republic
    (Europe/Tiraspol) has not followed much of Russia, and will not
    retain summer time - rather reverting to standard time along with
    western Europe, and Ukraine, on Oct 30, as it was earlier scheduled
    to do. This removes the Europe/Tiraspol zone (again) as the
    variation never actually happened (and returns the entry in the
    "backward" file).

* northamerica: Cuba (America/Havana) has extended summer time by two
    weeks, now to end on Nov 13, rather than the (already past) Oct 30.

2 years agokernel - Attempt to workaround low memory deadlock
Matthew Dillon [Fri, 4 Nov 2011 17:52:33 +0000 (10:52 -0700)]
kernel - Attempt to workaround low memory deadlock

* Mark the hammer flusher threads as system threads and call
  vm_wait_nominal() in the inode flush loop prior to acquiring
  an inode lock.

* This attempts to work around an issue where the pageout daemon has
  to do a BMAP indirectly via vnode_pager_put_pages(), which requires
  a dive into hammer deep enough to need the inode lock.

  The pageout daemon checks the vnode lock but has no visibility into
  the inode lock.  Only the hammer backend (theoretically) can acquire
  the inode lock without holding the vnode lock.  Hopefully this will
  improve the issue.

Reported-by: Antonio Huete Jimenez <tuxillo@quantumachine.net>
2 years agotwa(4): Remove some bogus NULL checks after kmalloc() with M_WAITOK.
Sascha Wildner [Fri, 4 Nov 2011 16:59:51 +0000 (17:59 +0100)]
twa(4): Remove some bogus NULL checks after kmalloc() with M_WAITOK.

Reported-by: alexh
2 years agokernel: Replace some bzero()s with M_ZERO in the preceding kmalloc().
Sascha Wildner [Fri, 4 Nov 2011 16:20:06 +0000 (17:20 +0100)]
kernel: Replace some bzero()s with M_ZERO in the preceding kmalloc().

2 years agotcp: Bring back MSG_EOF flag support in sosendtcp()
Sepherosa Ziehau [Fri, 4 Nov 2011 14:01:32 +0000 (22:01 +0800)]
tcp: Bring back MSG_EOF flag support in sosendtcp()

Though it was originally designed for T/TCP, it is nice to have

While I'm here, clean up the 'async' setting

2 years agosend(2): Add MSG_SYNC to allow user to disable asynchronized pru_send per-socket
Sepherosa Ziehau [Fri, 4 Nov 2011 13:33:50 +0000 (21:33 +0800)]
send(2): Add MSG_SYNC to allow user to disable asynchronized pru_send per-socket

2 years agoRemove some bogus CVS IDs.
Sascha Wildner [Fri, 4 Nov 2011 12:32:11 +0000 (13:32 +0100)]
Remove some bogus CVS IDs.

2 years agotcp: Enable asynchronized pru_send by default
Sepherosa Ziehau [Fri, 4 Nov 2011 11:35:02 +0000 (19:35 +0800)]
tcp: Enable asynchronized pru_send by default

2 years agotcp: Partly revert f2a3782
Sepherosa Ziehau [Fri, 4 Nov 2011 11:29:21 +0000 (19:29 +0800)]
tcp: Partly revert f2a3782

We do not need to sync the target netisr before disconnect or shutdown,
the problem was fixed in 392cd26 and turned out to be ipi message
ordering problem.

2 years agokernel - Fix localhost packet misordering
Matthew Dillon [Fri, 4 Nov 2011 05:25:31 +0000 (22:25 -0700)]
kernel - Fix localhost packet misordering

* netisr thread ports are based on IPIs, but when we enable asynch socket
  writes a user thread which gets moved between cpus sending async netmsgs
  while doing so can result in the netisr receiving those messages out
  of order, corrupting the data stream.

* Add TDF_FORCE_SPINPORT to allow the netisr threads to implement their
  message ports as spinports instead of threadports, which guarantees
  message ordering.

2 years agoBinutils 2.20: Effectively remove from world
John Marino [Thu, 3 Nov 2011 21:38:50 +0000 (22:38 +0100)]
Binutils 2.20: Effectively remove from world

There is no longer a reason to maintain multiple versions of binutils
in the base system.  While contrib/binutils-2.20 directory isn't being
removed quite yet, this commit effectively removed binutils 2.20 from
DragonFly.

Sometime in the future, binutils may be removed from the objformat
handler.  The value of the BINUTILSVERS variable no longer has any
effect, and the only version of binutils on the system is 2.21.

2 years agokernel - Fix bug in last commit
Matthew Dillon [Thu, 3 Nov 2011 20:41:48 +0000 (13:41 -0700)]
kernel - Fix bug in last commit

* Ooops, lwkt_gettoken->lwkt_reltoken.

Reported-by: ftigeot
2 years agoAdded AMD Features2 bits 17 (TCE), 23 (PCX_CORE) and 24 (PCX_NB) to identcpu.c for...
Markus Pfeiffer [Fri, 4 Nov 2011 17:51:47 +0000 (17:51 +0000)]
Added AMD Features2 bits 17 (TCE), 23 (PCX_CORE) and 24 (PCX_NB) to identcpu.c for pc32 and pc64

2 years agokernel - Fix /dev/mem access for memory >=4GB
Matthew Dillon [Thu, 3 Nov 2011 17:51:40 +0000 (10:51 -0700)]
kernel - Fix /dev/mem access for memory >=4GB

* The (v) variable was a u_int, chopping off the top 32 bits of a 64 bit
  physical address.  Change to a long.

2 years agokernel - Hold required token when accessing p_flags, adjust kmem access
Matthew Dillon [Thu, 3 Nov 2011 17:49:16 +0000 (10:49 -0700)]
kernel - Hold required token when accessing p_flags, adjust kmem access

* Numerous adjustments to p->p_flag were not being done with p->p_token held.
  In particular uiomove().

* Replace P_DEADLKTREAT with LWP_DEADLKTREAT in several places where it had
  not been previously converted.

* Allow DMAP access in is_globaldata_space() for x86-64

2 years agoioapic/x86_64: Per-cpu irqmap array
Sepherosa Ziehau [Thu, 3 Nov 2011 16:32:35 +0000 (00:32 +0800)]
ioapic/x86_64: Per-cpu irqmap array

2 years agoMachIntrABI/x86_64: Remove unnecessary setidt in intr_setup/teardown
Sepherosa Ziehau [Thu, 3 Nov 2011 15:06:16 +0000 (23:06 +0800)]
MachIntrABI/x86_64: Remove unnecessary setidt in intr_setup/teardown

MachIntrABI.setdefault() has already done that

2 years agoioapic/x86_64: Add missing imen_lock/unlock
Sepherosa Ziehau [Thu, 3 Nov 2011 14:58:32 +0000 (22:58 +0800)]
ioapic/x86_64: Add missing imen_lock/unlock

2 years agotcp: Allow pure asynchronized pru_send
Sepherosa Ziehau [Thu, 3 Nov 2011 13:38:49 +0000 (21:38 +0800)]
tcp: Allow pure asynchronized pru_send

- net.inet.tcp.sosnd_async is added to allow pure asynchronized pru_send.
  It is default to off currently.
- To prevent soclose() and soshutdown() from interfering TCP processing on
  the loopback interface, so_pru_sync() is added, which will make sure
  that so_pru_disconnect() and so_pru_shutdown() run only after all of the
  previous sent packets had been requeued to netisr (the semantics of the
  original half asynchronized pru_send).

2 years agogcc41: Add a missing file to CLEANFILES.
Sascha Wildner [Thu, 3 Nov 2011 10:19:20 +0000 (11:19 +0100)]
gcc41: Add a missing file to CLEANFILES.

2 years agoloader.8: Fix typo.
Sascha Wildner [Wed, 2 Nov 2011 23:53:59 +0000 (00:53 +0100)]
loader.8: Fix typo.

2 years agokernel - reformulate the maxusers auto-sizing calculation
Matthew Dillon [Wed, 2 Nov 2011 06:44:37 +0000 (23:44 -0700)]
kernel - reformulate the maxusers auto-sizing calculation

* Reformulate the maxusers auto-sizing calculation, which is used as a
  basis for mbufs and mbuf cluster calculations.  Base the values on
  limsize (basically the lower of KVM vs physical memory).

* Remove artificial limits.

* This basically effects x86-64 systems with > 4G of ram, greatly
  increasing the default maxusers value and related mbuf limits.

2 years agokernel - Fix spin-based msgports
Matthew Dillon [Wed, 2 Nov 2011 06:43:11 +0000 (23:43 -0700)]
kernel - Fix spin-based msgports

* LWKT threads can use thread/IPI or spin-based message ports.  The
  default is thread-based.  Spin-based ports had numerous problems which
  would result in panics.  This commit fixes those panics and makes the
  spinlock version viable.

* However, currently there is no performance improvement so the default
  is staying as it was.

2 years agokernel - Fix x86-64 pmap race
Matthew Dillon [Wed, 2 Nov 2011 06:42:06 +0000 (23:42 -0700)]
kernel - Fix x86-64 pmap race

* Fix a x86-64 pmap race where a pte can get ripped out from under
  the pmap_remove*() code.  Recheck the pte after locking pt_pv.

2 years agokernel - Major MP work on kq and signal processing
Matthew Dillon [Wed, 2 Nov 2011 06:38:42 +0000 (23:38 -0700)]
kernel - Major MP work on kq and signal processing

* Remove the global kq_token and move to a per-kq and per-kqlist
  pool token.  This greatly improves postgresql and mysql performance
  on MP systems.

* Adjust signal processing tokens to be per-LWP instead of per-PROC.
  Signal delivery still utilizes a per-proc token but signal distribution
  now uses a per-LWP token, which allows the trap code to only lock the
  LWP when checking for pending signals.

  This also significantly improves database performance.

* The socket code also now uses only its per-socket pool token instead
  of kq_token for its kq operations.  kq handles its own tokens.

2 years agokernel - add MAP_SIZEALIGN
Matthew Dillon [Wed, 2 Nov 2011 06:33:40 +0000 (23:33 -0700)]
kernel - add MAP_SIZEALIGN

* Add a mmap() MAP_SIZEALIGN flag which requests alignment the same
  as the size argument (different from Solaris's MAP_ALIGN which uses
  the address hint).

* Will be used in upcoming libc/stdlib/dmalloc.c work.  The dmalloc code
  will work without it just fine, too..

2 years agobuildkernel - remove COMPAT_43 and COMPAT_DF12
Matthew Dillon [Wed, 2 Nov 2011 06:31:50 +0000 (23:31 -0700)]
buildkernel - remove COMPAT_43 and COMPAT_DF12

* Remove old compats that we really should not be compiling into kernels
  any more.

  In particular, the old getpid() did some weird things which created
  unnecessary slowdowns on MP systems.

2 years agokernel - Add bsflong() asm functions
Matthew Dillon [Wed, 2 Nov 2011 06:21:59 +0000 (23:21 -0700)]
kernel - Add bsflong() asm functions

* Add bsflong() inline asm functions which operate on the 'long' data type.

2 years agoBump __DragonFly_version for the removal of <crypt.h> (to be safe).
Sascha Wildner [Tue, 1 Nov 2011 21:29:17 +0000 (22:29 +0100)]
Bump __DragonFly_version for the removal of <crypt.h> (to be safe).

2 years agopf/pf_ioctl.c: Fix whitespace error
Jan Lentfer [Tue, 1 Nov 2011 21:02:29 +0000 (22:02 +0100)]
pf/pf_ioctl.c: Fix whitespace error

2 years agoUnbreak LINT.
Sascha Wildner [Tue, 1 Nov 2011 10:34:17 +0000 (11:34 +0100)]
Unbreak LINT.

2 years agopf: convert to use kmalloc instead of zalloc
Jan Lentfer [Thu, 6 Jan 2011 10:03:55 +0000 (11:03 +0100)]
pf: convert to use kmalloc instead of zalloc

2 years agokernel - Fix mbuf cluster statistics, fix type change bug
Matthew Dillon [Mon, 31 Oct 2011 21:18:52 +0000 (14:18 -0700)]
kernel - Fix mbuf cluster statistics, fix type change bug

* The mbuf cluster statistics were not properly handling a sharecount race case,
  causing the cluster count to continuously increase under heavy loads.

* atomic_set_short() was being improperly used to set m->m_type, causing the type field
  to collect a logical OR of changeouts.  Just set it normally.

* We don't need to use atomic ops for per-cpu stats updates.

Reported-by: Peter Avalos <peter@theshell.com>, "Samuel J. Greear" <sjg@evilcode.net>
2 years agoRemove various unneeded definitions of abs() in userland.
Sascha Wildner [Mon, 31 Oct 2011 20:00:42 +0000 (21:00 +0100)]
Remove various unneeded definitions of abs() in userland.

2 years agokernel - Expand panic message for invalid pte case
Matthew Dillon [Mon, 31 Oct 2011 19:55:46 +0000 (12:55 -0700)]
kernel - Expand panic message for invalid pte case

* Expand a panic assertion to provide more information.

3 years agokernel - Fix missing token release in msync() error path
Matthew Dillon [Mon, 31 Oct 2011 18:16:59 +0000 (11:16 -0700)]
kernel - Fix missing token release in msync() error path

* Fix a missing token release in the msync() error path that would lead
  to a panic in the syscall return code.

Reported-by: swildner
3 years agoFix a macro argument expansion bug
Maurizio Lombardi [Mon, 31 Oct 2011 11:01:49 +0000 (12:01 +0100)]
Fix a macro argument expansion bug

3 years agoadduser(8): Sync with FreeBSD.
Sascha Wildner [Mon, 31 Oct 2011 15:43:37 +0000 (16:43 +0100)]
adduser(8): Sync with FreeBSD.

Submitted-by: Juan Francisco Cantero Hurtado <iam@juanfra.info>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2159>
               <http://bugs.dragonflybsd.org/issue2160>

3 years agoFix x86_64 buildkernel with 'options DIAGNOSTIC'.
Sascha Wildner [Mon, 31 Oct 2011 12:00:24 +0000 (13:00 +0100)]
Fix x86_64 buildkernel with 'options DIAGNOSTIC'.

3 years agoFix buildkernel without 'options INVARIANTS'.
Sascha Wildner [Mon, 31 Oct 2011 00:02:04 +0000 (01:02 +0100)]
Fix buildkernel without 'options INVARIANTS'.

Submitted-by: Joel K. Pettersson <joelkpettersson@gmail.com>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2172>

3 years agoRemove /usr/include/crypt.h via 'make upgrade'.
Sascha Wildner [Sun, 30 Oct 2011 20:20:32 +0000 (21:20 +0100)]
Remove /usr/include/crypt.h via 'make upgrade'.

3 years agoRevert "libcrypt - install crypt.h header"
Sascha Wildner [Sun, 30 Oct 2011 20:16:07 +0000 (21:16 +0100)]
Revert "libcrypt - install crypt.h header"

This reverts commit b4ed82ece2b69f4a6711d35c5e42938dfc1d804c.

BSDs have libcrypt and the prototypes for its functions are in
<unistd.h>. The reason we had crypt.h installed for a while was
to make KDE link against libcrypt, due to a wrong check in KDE.

Unfortunately, at least one other package (chat/dircproxy)
assumed that if <crypt.h> exists, it would also find prototypes
for crypt() and friends there, which is not the case. So it
would crash on x86_64 due to defaulting to int as crypt()'s
return type (which is a pointer).

The check in KDE has been fixed since and it properly checks
for the presence of libcrypt:

https://bugs.kde.org/show_bug.cgi?id=247627

Hence this revert.

In-discussion-with: alexh

3 years agoioapic_abi/x86_64: Optimize the GSI search a little bit
Sepherosa Ziehau [Sun, 30 Oct 2011 13:50:45 +0000 (21:50 +0800)]
ioapic_abi/x86_64: Optimize the GSI search a little bit

Use the recorded max line based IRQ instead of scanning the whole
IRQ map array

3 years agoioapic_abi/x86_64: Record the max line based IRQ
Sepherosa Ziehau [Sun, 30 Oct 2011 12:27:39 +0000 (20:27 +0800)]
ioapic_abi/x86_64: Record the max line based IRQ

3 years agox86_64/ioapic_abi: Rework debug messages
Sepherosa Ziehau [Sun, 30 Oct 2011 11:18:57 +0000 (19:18 +0800)]
x86_64/ioapic_abi: Rework debug messages

3 years agogrep: Upgrade to version 2.9
John Marino [Sat, 29 Oct 2011 22:59:01 +0000 (00:59 +0200)]
grep: Upgrade to version 2.9

Release 2.9 (2011-06-21) [stable]
Release 2.8 (2011-05-13) [stable]

Bug Fixes
===================
1. echo c|grep '[c]' would fail for any c in 0x80..0xff,
   and in many locales.
   E.g., printf '\xff\n'|grep "$(printf '[\xff]')" || echo FAIL
   would print FAIL rather than the required matching line.
   [bug introduced in grep-2.6]

2. grep's interpretation of range expression is now more consistent with
   that of other tools.  [bug present since multi-byte character set
   support was introduced in 2.5.2, though the steps needed to reproduce
   it changed in grep-2.6]

3. grep erroneously returned with exit status 1 on some memory allocation
   failure. [bug present since "the beginning"]

4. grep no longer clobbers heap for an ERE like '(^| )*( |$)'
   [bug introduced in grep-2.6]

5. grep is faster on regular expressions that match multibyte characters
   in brackets (such as '[áéíóú]').

6. echo c|grep '[c]' would fail for any c in 0x80..0xff, with a uni-byte
   encoding for which the byte-to-wide-char mapping is nontrivial.  For
   example, the ISO-88591 locales are not affected, but ru_RU.KOI8-R is.
   [bug introduced in grep-2.6]

7. grep -P no longer aborts when PCRE's backtracking limit is exceeded
   Before, echo aaaaaaaaaaaaaab |grep -P '((a+)*)+$' would abort.  Now,
   it diagnoses the problem and exits with status 2.

3 years agoMerge branch 'vendor/GREP'
John Marino [Sat, 29 Oct 2011 23:57:46 +0000 (01:57 +0200)]
Merge branch 'vendor/GREP'

3 years agoUpgrade grep version 2.7 to 2.9 on the vendor branch
John Marino [Sat, 29 Oct 2011 22:00:25 +0000 (00:00 +0200)]
Upgrade grep version 2.7 to 2.9 on the vendor branch

3 years agodiff: Remove location modification from 2004
John Marino [Sat, 29 Oct 2011 20:02:12 +0000 (22:02 +0200)]
diff: Remove location modification from 2004

diffutils has been carrying this modification since version 2.8.1.  That
version was changed to support libgnuregex which has since been removed.

It appears that likely libgnuregex didn't support the
RE_NO_POSIX_BACKTRACKING option, and thus required the modification.

3 years agodiffutils: Upgrade to version 3.2
John Marino [Sat, 29 Oct 2011 17:47:23 +0000 (19:47 +0200)]
diffutils: Upgrade to version 3.2

The majority of the changes were inherited from gnulib.  There were only
a few observable differences from version 3.0:

Release 3.2 (2011-09-02) [stable]
Release 3.1 (2011-08-10) [stable]

Bug fixes
===================
diff no longer reports spurious differences merely because two entries
in the same directory have names that compare equal in the current
locale, or compare equal because --ignore-file-name-case was given.

Changes in behavior
===================
--ignore-file-name-case now applies at the top level too.
For example, "diff dir inIt" might compare "dir/Init" to "inIt".

New features
===================
diff and sdiff have a new option --ignore-trailing-space (-Z).

3 years agoMerge branch 'vendor/DIFFUTILS'
John Marino [Sat, 29 Oct 2011 19:02:07 +0000 (21:02 +0200)]
Merge branch 'vendor/DIFFUTILS'

3 years agoUpgrade diffutils from 3.0 to 3.2 on the vendor branch
John Marino [Sat, 29 Oct 2011 15:39:48 +0000 (17:39 +0200)]
Upgrade diffutils from 3.0 to 3.2 on the vendor branch

3 years agokernel - Fix LINT compilation on 32-bit
Matthew Dillon [Sat, 29 Oct 2011 18:37:03 +0000 (11:37 -0700)]
kernel - Fix LINT compilation on 32-bit

* Fix conditional debug compilation that was breaking 32-bit LINT builds

Reported-by: swildner
3 years agokernel - Fix deadlock in vm_prefault
Matthew Dillon [Sat, 29 Oct 2011 18:23:24 +0000 (11:23 -0700)]
kernel - Fix deadlock in vm_prefault

* vm_prefault*() was being called while the primary vm_fault page was
  still being held busy, which could result in a deadlock.

* Reorder the case to unbusy the primary fault page before calling
  vm_prefault().

Reported-by: tuxillo
3 years agoipcs - Make it compile w/WARNS=6
Matthew Dillon [Sat, 29 Oct 2011 18:20:34 +0000 (11:20 -0700)]
ipcs - Make it compile w/WARNS=6

* Correct misc types, verify compilation on 32 and 64 bit

3 years agoipcs: Adjust ipcs display to take into account new shared memory sizes
Jan Lentfer [Sat, 30 Apr 2011 16:51:23 +0000 (18:51 +0200)]
ipcs: Adjust ipcs display to take into account new shared memory sizes

3 years agolibhammer - Include overlooked field freebigblocks.
Antonio Huete Jimenez [Sat, 29 Oct 2011 17:27:59 +0000 (19:27 +0200)]
libhammer - Include overlooked field freebigblocks.

3 years agox86_64/nexus: Per-cpu IRQ rman
Sepherosa Ziehau [Sat, 29 Oct 2011 14:35:23 +0000 (22:35 +0800)]
x86_64/nexus: Per-cpu IRQ rman

Now interrupt thread will be pin to the same CPU as where its GSI
will go.

3 years agox86_64/ioapic: Allow GSI's target CPU to be configured
Sepherosa Ziehau [Sat, 29 Oct 2011 13:13:43 +0000 (21:13 +0800)]
x86_64/ioapic: Allow GSI's target CPU to be configured

- Tuneable hw.ioapic.gsi.X.cpu is added, which could be used to specify
  the GSI X's target CPU id
- If hw.ioapic.gsi.X is not set, then GSI X will be target to CPU Y,
  Y = X % ncpus

3 years agokernel: Add missing MODULE_VERSION()s for file systems.
Sascha Wildner [Sat, 29 Oct 2011 09:57:42 +0000 (11:57 +0200)]
kernel: Add missing MODULE_VERSION()s for file systems.

The loader will figure out by itself whether to load a module or not,
depending on whether it's already in the kernel config or not, iif
MODULE_VERSION() is present.

I.e., if MSDOSFS (that has MODULE_VERSION()) is in the config and
msdos_load="YES" is in /boot/loader.conf, msdos.ko will not be loaded
by the loader at all.

Without MODULE_VERSION() it will lead (in the best case) to whining in
dmesg like for ahci or (in the worst case) to weird behavior, such as
for nullfs:

# mount -a
null: vfsload(null): No such file or directory

Therefore, we definitely want MODULE_VERSION() for all new modules.

This commit is the first in a series to add the missing MODULE_VERSION()s.

I know that ufs is not a module, just included it for completeness' sake.

Reported-by: marino, tuxillo
3 years agoFurther shared memory adjustments to be in line with POSIX.
Sascha Wildner [Sat, 29 Oct 2011 06:12:38 +0000 (08:12 +0200)]
Further shared memory adjustments to be in line with POSIX.

* shmat()'s and shmdt()'s addr argument shall be const.

* Make struct shmid_ds's shm_nattch unsigned and define the shmatt_t
  type for it.

* More manual page adjustments.

3 years agokernel - Autosize maximum shm pages
Matthew Dillon [Sat, 29 Oct 2011 02:09:27 +0000 (19:09 -0700)]
kernel - Autosize maximum shm pages

* If not overridden with a tunable autosize sysv shm to 2/3 of available
  ram.

3 years agokernel - Fix bug in shmget()
Matthew Dillon [Sat, 29 Oct 2011 01:54:01 +0000 (18:54 -0700)]
kernel - Fix bug in shmget()

* Fix bug in shmget() which was truncating requests >= 4G.

3 years agokernel - Remove libc shm shims
Matthew Dillon [Sat, 29 Oct 2011 01:53:26 +0000 (18:53 -0700)]
kernel - Remove libc shm shims

* Remove the shims so the new system calls are used instead of shmsys().

3 years agokernel - shmget() adjustments
Matthew Dillon [Sat, 29 Oct 2011 00:37:07 +0000 (17:37 -0700)]
kernel - shmget() adjustments

* Fix prototype and manual page

3 years agokernel - regenerate system calls
Matthew Dillon [Sat, 29 Oct 2011 00:19:58 +0000 (17:19 -0700)]
kernel - regenerate system calls

* Regenerate system calls (shm_ds).

3 years agokernel - shmid_ds structure needs to change on 64-bit :-(
Matthew Dillon [Sat, 29 Oct 2011 00:17:30 +0000 (17:17 -0700)]
kernel - shmid_ds structure needs to change on 64-bit :-(

* shmid_ds had very old parameters and used 'int' for the shm segment
  size.  It has to be adjusted to use size_t to accomodate shm segments
  greater than 2GB.

  This will break binary package compatibility on 64-bit systems until
  the related packages are recompiled.

* shmget() system call now takes a size_t instead of an int.

3 years agokillall - Add support for pts specifications
Matthew Dillon [Fri, 28 Oct 2011 23:51:58 +0000 (16:51 -0700)]
killall - Add support for pts specifications

* killall -t <number> now uses /dev/pts/<number> instead of
  /dev/tty<number>.

  killall -t <alpha>* continues to use /dev/tty<alpha>*.