jhb [Fri, 18 Mar 2011 17:18:09 +0000 (17:18 +0000)]
MFC 219399:
When constructing a new cpuset, apply the parent cpuset's mask to the new
set's mask rather than the root mask. This was causing the root mask to
be modified incorrectly.
jhb [Fri, 18 Mar 2011 17:15:10 +0000 (17:15 +0000)]
MFC 219384:
The UFS dirhash code was attempting to update shared state in the dirhash
from multiple threads while holding a shared lock during a lookup operation.
This could result in incorrect ENOENT failures which could then be
permanently stored in the name cache.
Specifically, the dirhash code optimizes the case that a single thread is
walking a directory sequentially opening (or stat'ing) each file. It uses
state in the dirhash structure to determine if a given lookup is using the
optimization. If the optimization fails, it disables it and restarts the
lookup. The problem arises when two threads both attempt the optimization
and fail. The first thread will restart the loop, but the second thread
will incorrectly think that it did not try the optimization and will only
examine a subset of the directory entires in its hash chain. As a result,
it may fail to find its directory entry and incorrectly fail with ENOENT.
To make this safe for use with shared locks, simplify the state stored in
the dirhash and move some of the state (the part that determines if the
current thread is trying the optimization) into a local variable. One
result is that we will now try the optimization more often. We still
update the value under the shared lock, but it is a single atomic store
similar to i_diroff that is stored in UFS directory i-nodes for the
non-dirhash lookup.
jh [Fri, 18 Mar 2011 08:48:06 +0000 (08:48 +0000)]
MFC r210371:
Convert md(4) to use alloc_unr(9) and alloc_unr_specific(9) for unit
number allocation. The old approach had some problems such as it allowed
an overflow to occur in the unit number calculation.
jilles [Thu, 17 Mar 2011 22:47:52 +0000 (22:47 +0000)]
MFC r219256: Fix some _POSIX minimum/maximum values in limits.h:
* Some values changed in POSIX.1-2001; provide the former value if a program
requests compliance to an earlier version of POSIX. [1]
* Add missing _POSIX_CLOCKRES_MIN constant. This is a maximum value but
otherwise works the same as the minimum values.
PR: standards/104743
Submitted by: bde [1] (not exact #ifdefs, but the values)
edwin [Wed, 16 Mar 2011 03:34:12 +0000 (03:34 +0000)]
MFC of 219687, tzdata2011d:
- Pacific/Apia will have DST on 2 April instead of 3 April in 2011.
- Turkye will go to DST on 28 April instead of 27 April in 2011.
- Cuba will go to DST on 20 April in 2011.
r213535 | ken | 2010-10-07 15:56:10 -0600 (Thu, 07 Oct 2010) | 36 lines
Turn on serialization of task management commands going down to the
controller, but make it optional.
After a problem report from Andrew Boyer, it looks like the LSI
chip may have issues (the watchdog timer fired) if too many aborts
are sent down to the chip at the same time. We know that task
management commands are serialized, and although the manual doesn't
say it, it may be a good idea to just send one at a time.
But, since I'm not certain that this is necessary, add a tunable
and sysctl variable (hw.mps.%d.allow_multiple_tm_cmds) to control
the driver's behavior.
mps.c: Add support for the sysctl and tunable, and add a
comment about the possible return values to
mps_map_command().
mps_sas.c: Run all task management commands through two new
routines, mpssas_issue_tm_request() and
mpssas_complete_tm_request().
This allows us to optionally serialize task
management commands. Also, change things so that
the response to a task management command always
comes back through the callback. (Before it could
come via the callback or the return value.)
mpsvar.h: Add softc variables for the list of active task
management commands, the number of active commands,
and whether we should allow multiple active task
management commands. Add an active command flag.
mps.4: Describe the new sysctl/loader tunable variable.
Sponsored by: Spectra Logic Corporation
Reminded by: Hubert Tournier <hubert at frbsd dot org>
jilles [Tue, 15 Mar 2011 20:24:21 +0000 (20:24 +0000)]
MFC r218019: Do not trip a KASSERT if /dev/null cannot be opened for a
setuid program.
The fdcheckstd() function makes sure fds 0, 1 and 2 are open by opening
/dev/null. If this fails (e.g. missing devfs or wrong permissions),
fdcheckstd() will return failure and the process will exit as if it received
SIGABRT. The KASSERT is only to check that kern_open() returns the expected
fd, given that it succeeded.
Tripping the KASSERT is most likely if fd 0 is open but fd 1 or 2 are not.
netchild [Tue, 15 Mar 2011 13:19:26 +0000 (13:19 +0000)]
MFC r218497:
Linux' shm_open() fails because it wants to find some funky shmfs
to construct the full pathname. It starts to search at the default
mountpoint which is /dev/shm. If this fails it runs through fstab
and searches for shmfs and tmpfs. Whatever it finds will be
statfs()'ed to be checked for Linux' fs magic for shmfs (0x01021994).
Ideally our tmpfs should deliver this fs magic to Linux processes, but
as our tmpfs is considered to be an experimental feature we can not
assume that there is always a tmpfs available.
To make shared memory work in the Linuxulator, force the fs type of
/dev/shm (which can be a symlink) to match what Linux expects. The user
is responsible (info has to be added to the linux base ports and the docs)
to setup a suitable link for /dev/shm.
Noticed by: Andre Albsmeier <Andre.Albsmeier@siemens.com>
Submitted by: Andre Albsmeier <Andre.Albsmeier@siemens.com>
pluknet [Tue, 15 Mar 2011 08:20:59 +0000 (08:20 +0000)]
MFC kern.msgbufsize: r217688-217689,r217709,r218666-218667,r218913.
Note, that arm/{s3c2xx0,econa} exist only in head, thus not merged.
r217688:
Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.
r217689:
Add kern.msgbufsize default setting to /boot/defaults/loader.conf.
r217709,218666-218667,218913 by marcel, cognet:
Fix up for various arm subtargets: call init_param1() before we use
msgbufsize, now that the size of the message buffer is a tunable.
dim [Mon, 14 Mar 2011 22:51:51 +0000 (22:51 +0000)]
Partially MFC r209867 and r215439, to provide rudimentary support for
linking i386 (32 bit) executables on amd64, using gcc's -m32 option.
r209867 introduces the needed multilib options to gcc's multilib.h, but
was originally intended just for powerpc64.
r215439 teaches the linker to search in /usr/lib32 for elf_i386_fbsd
output, and amends r209867 to apply to amd64 too.
NOTE: this MFC does NOT provide full support for compiling and linking
all existing 32 bit programs on amd64, since /usr/include/machine still
contains amd64-specific headers. Though simple "Hello World" type
programs work, anything relying on machine-specific types might fail in
various interesting ways. You have been warned. :)
MFC r209867:
Teach our toolchain how to generate 64-bit PowerPC binaries. This fixes
a variety of bugs in binutils related to handling of 64-bit PPC ELF,
provides a GCC configuration for 64-bit PowerPC on FreeBSD, and
associated build systems tweaks.
Obtained from: projects/ppc64
MFC r215439:
Let gcc and ld know where to find 32 bit libraries on amd64.
jh [Mon, 14 Mar 2011 17:08:30 +0000 (17:08 +0000)]
MFC r209710:
Extend the kernel unit number allocator for allocating specific unit
numbers. This change adds a new function alloc_unr_specific() which
returns the requested unit number if it is free. If the number is
already allocated or out of the range, -1 is returned.
Update alloc_unr(9) manual page accordingly and add a MLINK for
alloc_unr_specific(9).
np [Mon, 14 Mar 2011 09:50:14 +0000 (09:50 +0000)]
MFC cxgbe(4) and fixes.
r218792:
cxgbe(4) - NIC driver for Chelsio T4 (Terminator 4) based 10Gb/1Gb adapters.
r219285:
Fix incorrect assertion.
r219286:
Resume tx immediately in response to an SGE egress update from the hardware.
r219287:
Upgrade the firmware on the card automatically if a better version is
available. Downgrade only for a major version mismatch.
r219288:
A txpkts work request should have a valid FID.
r219289:
Store the ifnet rather than the port_info in each txq and rxq struct.
r219290:
Tweaks for rx:
- everything related to LRO should be in #ifdef INET blocks
- reorder sge_iq's fields so that the most frequently used are all together
- pull all rx code into t4_intr_data directly
- let go of the ingress queue lock when passing up data
- refill the freelist only if it is short of at least 32 buffers
r219292:
Calculate how many descriptors can be reclaimed before calling
reclaim_tx_descs
r219293:
There is no need to hold an ingress queue's lock while processing its
descriptors
r219299:
Be sure to stay within the bounds of the mod_str array when displaying
the transceiver type.
r219392:
cxgbe shouldn't directly know of the UMA zones where network buffers
come from.
r219436:
Display holdoff timers and packet counts as a list of numbers.
kib [Sun, 13 Mar 2011 09:36:52 +0000 (09:36 +0000)]
MFC r219352:
The execution of the shebang script requires putting interpreter path,
possible option and script path in the place of argv[0] supplied to
execve(2). It is possible and valid for the substitution to be shorter
then the argv[0].
osa [Sat, 12 Mar 2011 14:57:10 +0000 (14:57 +0000)]
MFC r216697:
Fix typo (Pashka -> Paskha).
MFC r217025:
Fix typo: March -> September.
MFC r218471:
Fix Paskha and Paskha-specific holidays.
MFC r218473:
Always convert Paskha day from Julian (old) to Gregorian (new)
style by adding 13 days. Bug introduced in 1.13 revision.
MFC r218771:
Fix the beginning day of the Great Lent, it starts on Monday
for 7 weeks before Paskha.
Fix the Exaltation of the Holy Cross day.
Add more Twelve holidays (dvunadesyatye prazdniki).
MFC r218797:
Replace hard-coded value by Julian2Gregorian converter function.
MFC r219174:
Fix beginning day of the Carnival.
MFC r219175:
Expand the name of Palm Sunday holiday with more canonical Entry
of the Lord into Jerusalem.
Merge the Pentecost and Trinity Sunday holidays, they are synonyms.
Remove Body of Christ day, nonexistent holiday for Orthodox Church.
Fix typo in the name of Ioann The Baptist, introduced in previous
commit.
avg [Fri, 11 Mar 2011 19:27:31 +0000 (19:27 +0000)]
use even larger stack size for ZFS txg_sync_thread
While the stack size was larger than the default stack size on i386, it
was smaller than the default stack size on amd64 and apparently that
wasn't enough. So, bump the size to 4 pages. Upcoming ZFSv28 code uses
8 pages for this stack size.
jhb [Fri, 11 Mar 2011 16:21:45 +0000 (16:21 +0000)]
MFC 219136:
Use a suitable DIRPRFX for each invocation of make in the build32 and
install32 targets so that the full path to each program or library is
displayed in the make output.
jhb [Fri, 11 Mar 2011 16:14:06 +0000 (16:14 +0000)]
MFC 219135:
Similar to 189574, properly handle subclasses of bus drivers when deleting
a driver during kldunload. Specifically, recursively walk the tree of
subclasses of a given driver attachment's bus device class detaching all
instances of that driver for each class and its subclasses.
delphij [Thu, 10 Mar 2011 01:02:53 +0000 (01:02 +0000)]
MFC r218432:
Don't consider ioctl returning error as a fatal error and move on to next
disk. When multiple devices are specified, a non-supporting ioctl will
cause diskinfo(8) to stop at the point which does not seem to be necessary.
Add "maxfilesize" mount option for tmpfs to allow specifying the
maximum file size limit. Default is UINT64_MAX when the option is
not specified. It was useless to set the limit to the total amount of
memory and swap in the system.
Use tmpfs_mem_info() rather than get_swpgtotal() in tmpfs_mount() to
check if there is enough memory available.
pluknet [Wed, 9 Mar 2011 12:14:49 +0000 (12:14 +0000)]
MFC r202897,r208164,r212174: msgbufp mapping changes on amd64.
r202897 by alc:
Simplify the mapping of the system message buffer. Use the direct map just
like ia64 does.
r208164 by alc:
Correct an error of omission in r202897: Now that amd64 uses the direct map
to access the message buffer, we must explicitly request that the underlying
physical pages are included in a crash dump.
r212174 by avg:
vm_page.c: include opt_msgbuf.h for MSGBUF_SIZE use in vm_page_startup
edwin [Tue, 8 Mar 2011 21:14:02 +0000 (21:14 +0000)]
MFC of tzdata2011c, r219411
- No leapsecond in June 2011
- Add and update timezones for America/Juneau, America/Sitka,
America/Metlakatla
- Change of Summer time to Winter time in Chili happens in April
2011, not in March 2011.
- Change the type of size_max to u_quad_t because its value is converted
with vfs_scanopt(9) using the "%qu" format string.
- Limit the maximum value of size_max to (SIZE_MAX - PAGE_SIZE) to
prevent overflow in howmany() macro.
PR: kern/141194
MFC r202187:
- Fix some style bugs in tmpfs_mount().
- Remove a stale comment about tmpfs_mem_info() 'total' argument.
MFC r202708:
- Change the type of nodes_max to u_int and use "%u" format string to
convert its value.
- Set default tm_nodes_max to min(pages + 3, UINT32_MAX). It's more
reasonable than the old four nodes per page (with page size 4096) because
non-empty regular files always use at least one page. This fixes possible
overflow in the calculation.
- Don't allow more than tm_nodes_max nodes allocated in tmpfs_alloc_node().
jkim [Mon, 7 Mar 2011 18:00:58 +0000 (18:00 +0000)]
MFC: r218293
Do not let pw.conf(5) or -M option affect creation of basehome, e.g., /home.
When the basehome does not exist, it creates all intermediate directories as
required, which is logically equivalent to mkdir(1) with -m and -p options.
However, it modifies all intermediate directories, not just the final home
directory unlike mkdir. This problem was introduced in two revisions, i.e.,
r1.59 (SVN r167919) and r1.60 (SVN r168044).
jhb [Mon, 7 Mar 2011 17:15:10 +0000 (17:15 +0000)]
MFC 218970,219240:
Use umtx_key objects to uniquely identify futexes. Private futexes in
different processes that happen to use the same user address in the
separate processes will now be treated as distinct futexes rather than the
same futex. We can now honor shared futexes properly by mapping them to a
AUTO_SHARED umtx_key. Private futexes use THREAD_SHARED umtx_key objects.
Use g_eventlock to protect against losing wakeups in the g_event process
and replace tsleep(9) with msleep(9) which doesn't use a timeout. The
previously used timeout caused the event process to wake up ten times
per second on an idle system.
one_event() is now called with the topology lock held and it returns
with both the topology and event locks held when there are no more
events in the queue.
yongari [Mon, 7 Mar 2011 00:42:22 +0000 (00:42 +0000)]
MFC r219102:
Make sure changing ownership of RX descriptor to be done as last
operation. Previously ownership was transferred to hardware before
setting address of new RX buffer such that it was possible for
hardware to use wrong RX buffer address.
While here keep compiler from re-ordering instructions by declaring
descriptor members volatile. Memory barriers would do the same job
but volatile is supposed to be cheaper than using memory barriers,
especially on MP systems.
marius [Sun, 6 Mar 2011 11:51:39 +0000 (11:51 +0000)]
MFC: r216013, r216083
Several chipset drivers alter parameters relevant for the DMA tag creation,
i.e. alignment, max_address, max_iosize and segsize (only max_address is
thought to have an negative impact regarding this issue though), after
calling ata_dmainit() either directly or indirectly so these values have
no effect or at least no effect on the DMA tags and the defaults are used
for the latter instead. So change the drivers to set these parameters
up-front and ata_dmainit() to honor them.
marius [Sun, 6 Mar 2011 11:43:02 +0000 (11:43 +0000)]
- Use the correct DMA tag/map pair for synchronize the FC scratch area.
- Allocate coherent DMA memory for the request/response queue area and
and the FC scratch area.
These changes allow isp(4) to work properly on sparc64 with usage of the
IOMMU streaming buffers enabled.
Add opteron-sse3, athlon64-sse3 and k8-sse3 cpu types to bsd.cpu.mk.
- add "sse3" to MACHINE_CPU for the new cpu types
- for i386, default to CPUTYPE=prescott for the new cpu types
Add opteron-sse3, athlon64-sse3 and k8-sse3 cpu types to bsd.cpu.mk.
- add "sse3" to MACHINE_CPU for the new cpu types
- for i386, default to CPUTYPE=prescott for the new cpu types
Backport svn r124339 from gcc 4.3 and add opteron-sse3, athlon64-sse3
and k8-sse3 cpu-types for -march=/-mtune= gcc options.
These new cpu-types include the SSE3 instruction set that is supported
by all newer AMD Athlon 64 and Opteron processors.
All three cpu-types are supported by clang and all gcc versions
starting with 4.3 SVN rev 124339 (at that time GPLv2 licensed).
das [Sun, 6 Mar 2011 08:50:15 +0000 (08:50 +0000)]
Bump __FreeBSD_version for the MFC of log2(), for the benefit of ports
such as opencity and inkscape that have workarounds for the lack of a
log2() in the base system.
MFC r212067 (pjd):
Eliminate confusing while () loop. In the first version of the code it was
there to avoid gotos, but in the current version it serves no purpose.
MFC r214623 (pjd):
Fix ztest when it is executed by just 'ztest' and not by full path
'/usr/bin/ztest'.
jhb [Thu, 3 Mar 2011 20:13:44 +0000 (20:13 +0000)]
MFC 218968:
Properly handle BARs bigger than 4G. The '1' was treated as an int
causing the size calculation to be truncated to the size of an int
(32-bits on all current architectures).
jhb [Thu, 3 Mar 2011 19:57:38 +0000 (19:57 +0000)]
MFC 218777:
Save a copy of errno before invoking syslog() if accept() or select() fail.
syslog() can trash the errno value causing nfsd to exit for non-fatal
errors like ECONNABORTED from accept().
jhb [Thu, 3 Mar 2011 18:52:11 +0000 (18:52 +0000)]
MFC 216487,217754,218524:
- Pass JFLAG as JFLAG from tinderbox to universe.
- For `make tinderbox` there is no need to print the extra commands.
- Add a new UNIVERSE_TARGET variable for 'make universe'. If it is set,
then that target is invoked for each architecture rather than the
default action of building world and kernels for each architecture.
- Add a 'make toolchains' wrapper which uses UNIVERSE_TARGET to build
toolchains for all architectures.
- Document JFLAG, MAKE_JUST_KERNELS, and MAKE_JUST_WORLDS variables for
'make universe'.
If dlclose() is called recursively from a _fini() function, the inner
dlclose() call may unload the object of the outer call prematurely
because objects are unreferenced before _fini() calls.
Fix this by unreferencing objects after calling objlist_call_fini() in
dlclose(). Therefore objlist_call_fini() now calls the fini function if
the reference count of an object is 1. In addition we must restart the
list_fini traversal after every _fini() call because another dlclose()
call might have modified the reference counts.
Add an XXX comment to objlist_call_fini() about possible race with
dlopen().
jhb [Thu, 3 Mar 2011 16:58:58 +0000 (16:58 +0000)]
MFC 218270:
Use M_WAITOK rather than M_NOWAIT when creating taskqueues via the
TASKQUEUE_DEFINE macros. All the places that use these macros to create
taskqueues assume that the operation succeeds.