mav [Tue, 9 Aug 2011 07:35:56 +0000 (07:35 +0000)]
MFC r224603:
Do not force AHCI mode on NVIDIA MCP89 SATA controllers. Recent Apple
Mac with this chipset does not initialize AHCI mode unless it is started
from EFI loader. However, legacy ATA mode works.
emaste [Mon, 8 Aug 2011 13:56:27 +0000 (13:56 +0000)]
MFC r224047:
Remove note that claims pthread_set_name_np is for debugging only.
As Garrett points out,
It is no more a debugging interface than setproctitle(3), and has not
been since the name started getting stuffed into the kernel. This
statement may have made sense when the name was only visible in thread
state dumps and the debugger.
kib [Mon, 8 Aug 2011 08:22:15 +0000 (08:22 +0000)]
MFC r224581:
Fix the LK_NOSHARE lockmgr flag interaction with LK_UPGRADE and
LK_DOWNGRADE lock ops. Namely, the ops should be NOP since LK_NOSHARE
locks are always exclusive.
mav [Sun, 7 Aug 2011 17:30:03 +0000 (17:30 +0000)]
MFC r224497:
Add control for ATA disk read-ahead, alike to the previously added write
cache control. Some controller BIOS'es tend to disable read-ahead, that
dramatically reduces read performance. Previously ata(4) always enabled
read-ahead unconditionally.
mav [Sun, 7 Aug 2011 17:28:08 +0000 (17:28 +0000)]
MFC r224496:
In some cases failed SATA disks may report their presence, but don't
respond to any commands. I've found, that because of multiple command
retries, each of which cause 30s timeout, bus reset and another retry or
requeue for many commands, it may take ages to eventually drop the
failed device. The odd thing is that those retries continue even after
XPT considered device as dead and invalidated it.
This patch makes cam_periph_error() to block any command retries after
periph was marked as invalid. With that patch all activity completes in
1-2 minutes, just after several timeouts, required to consider device
death. This should make ZFS, gmirror, graid, etc. operation more robust.
mav [Sun, 7 Aug 2011 17:19:59 +0000 (17:19 +0000)]
MFC r224531:
Higher-priority initialization request can eat request scheduling done from
adaclose(). Add immediate_priority check into adaschedule() to restore it.
mav [Sun, 7 Aug 2011 17:18:22 +0000 (17:18 +0000)]
MFC r224498:
In some cases, at least on Marvell 88SE912x controllers, Current Command
Slot field of the PxCMD register may point to an empty command slot.
That breaks command timeout detection logic, making impossible to find
what command actually caused timeout, and leading to infinite wait.
Workaround that by checking whether pointed command slot is really used
and can timeout in its time. And if not, fallback to the dumb algorithm
used with FBS -- let all commands to time out and then fail all of them.
kib [Sat, 6 Aug 2011 11:33:17 +0000 (11:33 +0000)]
MFC r224522:
Fix a race in the device pager allocation. If another thread won and
allocated the device pager for the given handle, then the object
fictitious pages list and the object membership in the global object
list still need to be initialized. Otherwise, dev_pager_dealloc() will
traverse uninitialized pointers.
kib [Wed, 3 Aug 2011 14:29:20 +0000 (14:29 +0000)]
MFC r223988:
While fixing the looping of a thread while devfs vnode is reclaimed,
r179247 introduced a possibility of devfs_allocv() returning spurious
ENOENT. If the vnode is selected by vnlru daemon for reclamation, then
devfs_allocv() can get ENOENT from vget() due to devfs_close() dropping
vnode lock around the call to cdevsw d_close method.
Use LK_RETRY in the vget() call, and do some part of the devfs_reclaim()
work in devfs_allocv(), clearing vp->v_data and de->de_vnode. Retry the
allocation of the vnode, now with de->de_vnode == NULL.
The check vp->v_data == NULL at the start of devfs_close() cannot be
affected by the change, since vnode lock must be held while VI_DOOMED
is set, and only dropped after the check.
MFC r223753:
ARP code reuses mbuf from ARP request to make a reply, but it does not
reset rcvif to NULL. Since rcvif is not NULL, ipfw(4) supposes that ARP
replies were received on specified interface.
Reset rcvif to NULL for ARP replies to fix this issue.
uqs [Tue, 2 Aug 2011 09:06:04 +0000 (09:06 +0000)]
MFH r223715
- Fix typo in check_for_nested_with_variably_modified
- Implement -Wvariable-decl.
- Port -Wtrampolines support from gcc3.
(all three also via OpenBSD)
PR: gnu/127136, gnu/157019
Submitted by: Henning Petersen, Pedro Giffuni
MFC 224177:
ZFS tries to allocate blocks evenly across all devices. This means when
devices are imbalanced zfs will lots of CPU searching for space on devices
which tend to be pretty full. It should instead fail quickly on the full
devices and move onto devices which have more availability.
New loader tunable: vfs.zfs.mg_alloc_failures (min = 8)
MFC on usr.bin/bsdtar:
203569,203571,203586-203590,203593-203594,204329,205076,206463-206466,
206484-206485,206487,207786,207790-207791,208028,209152,210720,213469,
223541,223573,224153,224158
MFC 203569 (kientzle):
bsdtar doesn't actually know what compression is supported by libarchive
and it should not pretend that it does. It should just pass along the
user's request and handle an error if it's not supported.
MFC 203571 (kientzle):
Fill in some missing error handling, be a little more careful about
error reporting, prefer int64_t to off_t.
MFC 203586 (kientzle):
Trim out some unused configuration variables, remove
some unused headers, etc.
MFC 203587 (kientzle):
Minor code rework.
MFC 203588 (kientzle):
Restructure the logic that determines when we're crossing a mount
point. In particular, this carves out a place for detecting and
excluding synthetic or network filesystems.
MFC 203589 (kientzle):
Various portability workarounds for non-FreeBSD platforms.
MFC 203590 (kientzle):
Style & Portability: Use archive_entry methods to examine
file information, change some functions to static, remove
some unused headers.
MFC 203593 (kientzle):
Merge a bunch of refactoring from Joerg Sonnenberger to
isolate common code used by tar and cpio (and useful to other
libarchive clients). The functions here are prefixed with
"lafe" (libarchive front-end) to indicate their use.
MFC 205076 (uqs):
Fix several typos in macros or macro misusage.
Found by: make manlint
MFC 206463 (kientzle):
Correct the markup for the -s option,
document the iso9660:rockridge and mtree:indent options
MFC 206464 (kientzle):
Remove an unnecessary include and conditionalize some code.
MFC 206465 (kientzle):
Consistently specify O_BINARY when opening files.
MFC 206466 (kientzle):
Fix -X.
MFC 206484 (kientzle):
Diff reduction against bsdtar 2.8.3
MFC 206485 (kientzle):
Diff reduction against bsdtar 2.8.3
MFC 206487 (kientzle):
If a file is specifically both included and excluded, then:
* It is not extracted (because it is excluded)
* If it's not present in the archive, then an error is
reported (because the file was requested and not found)
* If it is present in the archive, no error is reported.
Previously, this would always report an error because the
exclusion prevented the entry from matching the inclusion.
Also, tar is now more reluctant to report unmatched inclusions.
Previously, "tar x file1 'file*'" against an archive that contained a
single entry "file1" would match file1 and then report an error for
the second pattern because it wasn't matched. It now considers both
inclusions to be matched and reports no error.
MFC 207786 (kientzle):
Various manpage updates, including many long-option synonyms that were previously
undocumented.
MFC 207790 (kientzle):
Config updates.
MFC 207791 (kientzle)
FreeBSD is now using bsdtar 2.8.3.
MFC 208028 (uqs):
mdoc: move remaining sections into consistent order
This pertains mostly to FILES, HISTORY, EXIT STATUS and AUTHORS sections.
Found by: mdocml lint run
MFC 209152 (kientzle):
If the compressed data is larger than the uncompressed,
report the compression ratio as 0% instead of displaying
nonsense triggered by numeric overflow. This is common
when dealing with uncompressed files when the I/O blocking
causes there to be small transient differences in the
accounting.
Thanks to: Boris Samorodov
MFC 210720 (joel):
Fix typos.
MFC 213469 (kientzle):
Recognize both ! and ^ as markers for negated character classes.
Submitted by: Mykola Dzham
MFC 223541 (kientzle):
If there is a read error reading Y/N confirmation from the keyboard,
exit immediately with an error.
If there is an error opening or reading a file to put into the archive,
set the return value for a deferred error exit.
MFC 223573 (kientzle):
The --newer-than test should descend into old
directories to look for new files.
MFC 224153 (mm):
Update bsdtar to 2.8.4
Use common code from lib/libarchive/libarchive_fe
MFC 224158 (mm):
Fix accidential commit part:
Include "bsdtar_platform.h" instead of "lafe_platform.h"
MFC on usr.bin/cpio:
203183,204329,207792,211054,211397,212263,224154-224155
MFC 203183 (kientzle):
Support -V option to print a dot for each file processed.
Also, change the existing -vi behavior to send the filenames to
stderr rather than stdout, as GNU cpio does.
MFC 211054 (kientzle):
Fix -R when used with -p. Previously, the
uname and gname weren't overwritten, so the
disk restore would use those to lookup the
original uid/gid again. Clearing the uname
and gname prevents this.
Reported by: swell.k
MFC 211397 (joel):
Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages. Minor corrections by me.
MFC on lib/libarchive:
196961,200351,201077,201079-201097,201099-201112,201155-201157,
201159-201163,201165,201167-201171,201246-201250,201253,202868-202869,
202871-202873,203952,208027,208169,208184,208263,208291,210825,213573,
214822,214867,214905,216258,221472,224152
MFC 196961 (kientzle):
Update tests to match r195873, which corrected how hardlinked files
on iso9660 images were returned. While I'm poking around, update
some comments around this area to try to clarify what's going on and
what still remains to be improved.
MFC 200351 (kientzle):
Merge two cpio fixes from libarchive.googlecode.com:
1) Avoid an infinite loop in the header resync for certain malformed
archives.
2) Don't try to match hardlinks if the nlinks count is < 2. This
reduces the likelihood of a false hardlink match due to ino truncation.
MFC 201077 (kientzle):
Update format manpages for libarchive.
MFC 201079 (kientzle):
Update the hard-coded configuration for libarchive.
MFC 201080 (kientzle):
Remove some unused variables and dead assignments.
MFC 201081 (kientzle):
Remove a dead assignment.
MFC 201082 (kientzle):
Catch certain gzip failures at close time.
MFC 201083 (kientzle):
Compatibility fix for some older systems with non-POSIX getgrnam_r/getpwnam_r
and a minor style fix for the hash function.
MFC 201084 (kientzle):
Sync with googlecode some changes that have no impact on FreeBSD.
MFC 201085 (kientzle):
Compatibility: I found some more compilers that don't like 'inline' keyword.
Protection: Discourage people from using this header outside libarchive.
MFC 201086 (kientzle):
Discourage people from using this header outside of libarchive.
MFC 201087 (kientzle):
Enforce this as an internal-only header.
MFC 201088 (kientzle):
Allow more formats to be active at a time; discourage outside use.
MFC 201089 (kientzle):
Portability: terminate abnormally via abort() instead of segfault,
watch the return value from write(), and avoid signed arithmetic on
unsigned values.
MFC 201091 (kientzle):
Remove dead assignment.
MFC 201092 (kientzle):
Discourage outside use of this internal header.
MFC 201093 (kientzle):
Portability: Set the file descriptor to binary mode on Win32
MFC 201094 (kientzle):
Eliminate an unused assignment.
MFC 201095 (kientzle):
Remove an unused variable and an unnecessary increment.
MFC 201096 (kientzle):
Various portability fixes, plus:
* New "ino64" field.
* New UTF8 interfaces for hardlink/symlink updates
MFC 201097 (kientzle):
Portability fixes.
MFC 201099 (kientzle):
Use new ino64 interface.
MFC 201110 (kientzle):
Clarify an example so Linux folks won't keep getting confused by this
point.
MFC 201111 (kientzle):
Remove some dead assignments, fix some declarations.
MFC 201112 (kientzle):
Portability.
MFC 201155 (kientzle):
64-bit ino support and discourage bad use of this header.
MFC 201156 (kientzle):
Various style and portability fixes, including:
* Enforce option interface can only be used before the archive is opened
* Correctly handle large skips on platforms with 32-bit off_t
* Use int64_t instead of off_t
MFC 201157 (kientzle):
Catch decompression failures earlier. In particular, this gives
immediate feedback if we fail to fork an external decompression program.
MFC 201159 (kientzle):
Various fixes when creating objects on disk:
* Write xattrs last instead of first (required on platforms that use
system xattrs for security attributes)
* Better handling of chdir() failures
* Don't bother trying to shorten files via seek()/write()
* Fix build on systems that lack link()/symlink()/mknod()
* Prefer futimens()/utimensat() when they're present
MFC 201160 (kientzle):
Various style fixes to the 'newc' cpio writer:
* Warn about truncation of ino
* Use a macro to hide the somewhat obscure pad-to-multiple-of-4 calculation
* Eliminate some unused variables
MFC 201161 (kientzle):
Style fixes to tar reader:
For portability, prefer int64_t to off_t.
Improve numeric overflow handling when parsing.
Fix some variable types.
Eliminate some unused results.
MFC 201162 (kientzle):
Style and portability fixes for pax writer. Mostly very routine, except for:
* Use ino64 where appropriate
* Don't pass atime or nsec to ustar formatter
MFC 201163 (kientzle):
Be a little more skeptical of dev/ino matches when reading cpio files.
This eliminates some false-positives in the hardlink detection logic.
MFC 201165 (kientzle):
Minor style fixes plus a fix for an obscure crash on certain malformed
mtree files.
MFC 201167 (kientzle):
If we're linking against liblzma, allow the decompressor to use up to
1<<30 bytes of memory, which is required for some streams.
Also, try to make the taster more discriminating about raw lzma streams.
The detection here is still really weak, though; please use xz instead
of lzma.
MFC 201168 (kientzle):
Zip write support for libarchive.
The initial implementation was developed by Anselm Strauss as part of
Google Summer of Code 2008, then completed by Joerg Sonnenberger.
MFC 201170 (kientzle):
Essentially eliminate problems with false hardlinks in POSIX cpio
archives by generating synthetic ino values and mapping values
from disk into the new values.
MFC 201171 (kientzle):
Rationalize the support for cryptographic hashes.
MFC 201246 (kientzle):
Merge Michihiro NAKAJIMA's significant work on the ISO9660 reader
from googlecode:
* Support for zisofs compressed entries
* Support for relocated deep directories
* Direct calculation of link counts for accurate nlink values
even on images that lack Rockridge extensions
* Faster handling of the internal file lists.
* Better detection of ISO variants
MFC 201247 (kientzle):
A raft of test changes and improvements from the Googlecode repository.
In particular, this includes tests for the new features I've merged
over the last few days.
MFC 201248 (kientzle):
UU decoder. Now that libarchive can recursively taste input streams,
you can do things like this: tar xvf archive.tar.gz.uu
MFC 201249 (kientzle):
Libarchive in FreeBSD is now synced up with 2.7.901a from
libarchive.googlecode.com
MFC 201250 (kientzle):
Reserve constants for RPM unwrapper and XAR reader.
MFC 201253 (kientzle):
Remove some test files that are no longer used.
MFC 202868 (kientzle):
Fix a memory leak when a filter fails to initialize.
MFC 202869 (kientzle):
Initialize the allocated 'struct zip'.
MFC 202871 (kientzle):
If we can't stat a file, return the correct ARCHIVE_FAILED (this entry can't
be processed any further) and a suitable error string.
In particular, this improves the error-reporting when cpio -o is
given a nonexistent filename.
MFC 202872 (kientzle):
Use a simpler memory-management strategy for the file objects.
Instead of trying to reference-count them and free them as soon
as they are no longer needed, we now just keep them around and free
them all when we release the archive object. This fixes a number
of minor memory leaks, especially when reading damaged archives.
MFC 202873 (kientzle):
Don't try to hardlink block or character device nodes that come out
of cpio archives.
MFC 203952 (uqs):
Add missing newline in last line of file.
Uncovered via: fromcvs vs. svn
MFC 208027 (uqs):
mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the
bottom of the manpages and order them consistently.
GNU groff doesn't care about the ordering, and doesn't even mention
CAVEATS and SECURITY CONSIDERATIONS as common sections and where to put
them.
Found by: mdocml lint run
MFC 208169 (kientzle):
Reorganize slightly in preparation for making lzma and bz2 support
conditional.
MFC 208184 (delphij):
Fix build.
MFC 208263 (kientzle):
Retry reads that fail with EINTR. This fixes a problem
with bsdtar failing on SIGINT.
MFC 213573 (uqs):
mdoc: drop redundant .Pp and .LP calls
They have no effect when coming in pairs, or before .Bl/.Bd
MFC 214822 (kientzle):
Clarify the naming: Methods that free an object should
be called "free". Retain the old "finish" names to preserve
source compatibility for now.
MFC 214867 (uqs):
Fix manpage markup.
MFC 214905 (kientzle):
If the Zip reader doesn't see a PK signature block
because there's inter-entry garbage, just scan forward
to find the next one. This allows us to handle a lot
of Zip archives that have been modified in-place.
Thanks to: Gleb Kurtsou for sending me a sample archive
MFC 216258 (kientzle):
Don't write data into an empty "file."
In particular, this check avoids a warning when
extracting directory entries from certain GNU tar
archives that store directory contents.
MFC 221472 (obrien):
libarchive is mixing libmd and libcrypto -- correct to use one or the other.
[mixing the two can be quite bad -- they define the same context structures,
but with differing structure members (and sizes)]
MFC 224152 (mm):
- Update libarchive to 2.8.4
- Add support for extracting xar and rpm archives
- Add libarchive_fe subdir (common code for tar and cpio)
MFC: r224117
The new NFSv4 client handled NFSERR_GRACE as a fatal error
for the remove and rename operations. Some NFSv4 servers will
report NFSERR_GRACE for these operations. This patch changes
the behaviour of the client so that it handles NFSERR_GRACE
like NFSERR_DELAY for non-state related operations like
remove and rename. It also exempts the delegreturn operation
from handling within newnfs_request() for NFSERR_DELAY/NFSERR_GRACE
so that it can handle NFSERR_GRACE in the same manner as before.
This problem was resolved thanks to discussion with bfields at fieldses.org.
The problem was identified at the recent NFSv4 ineroperability
bakeathon.
r224283:
Do not try to execute FLUSHCACHE on close and print extra messages for
invalidated (considered lost) ada device. Exactly same already done for
the da devices.
MFC r224250:
Fix `diskinfo -t` operation for disks smaller then 8GB or bigger then 2TB.
Tested to work with 1.44MB floppy, 4GB USB stick and 4TB disk array.
MFC r224270:
- Use mutex to serialize index/data register pair usage, when
accessing SATA registers. Unserialized access under heavy load caused
wrong speed reporting and potentially could cause device loss.
- To free memory and other resources (including above), allocated
during chipinit() method call on attach, add new chipdeinit() method,
called during driver detach.
Add a -l option to show file system's corresponding /dev/ufsid path.
This is useful for scripts that converts existing system's fstab to
use their /dev/ufsid devices.
MFC: r223971
r222389 introduced a case where the NFSv4 client could
loop in nfscl_getcl() when a forced dismount is in progress,
because nfsv4_lock() will return 0 without sleeping when
MNTK_UNMOUNTF is set.
This patch fixes it so it won't loop calling nfsv4_lock()
for this case.
MFC r223437:
Export AddLink() function from libalias. It can be used when custom
alias address needs to be specified.
Add inbound handler to the alias_ftp module. It helps handle active
FTP transfer mode for the case with external clients and FTP server behind
NAT. Fix passive FTP transfer case for server behind NAT using redirect with
external IP address different from NAT ip address.
PR: kern/157957
Submitted by: Alexander V. Chernikov
MFC r223080:
Implement "global" mode for ipfw nat. It is similar to natd(8)
"globalport" option for multiple NAT instances.
If ipfw rule contains "global" keyword instead of nat_number, then
for each outgoing packet ipfw_nat looks up translation state in all
configured nat instances. If an entry is found, packet aliased
according to that entry, otherwise packet is passed unchanged.
User can specify "skip_global" option in NAT configuration to exclude
an instance from the lookup in global mode.
PR: kern/157867
Submitted by: Alexander V. Chernikov (previous version)
marius [Wed, 27 Jul 2011 11:21:49 +0000 (11:21 +0000)]
MFC: r223228
Merge from r161730:
o Set TP using inline assembly to avoid dead code elimination.
o Eliminate _tcb.
Merge from r161840:
Stylize: avoid using a global register variable.
Merge from r157461:
Simplify _get_curthread() and _tcb_ctor because libc and rtld now
already allocate thread pointer space in tls block for initial thread.
Merge from r177853:
Replace function _umtx_op with _umtx_op_err, the later function directly
returns errno, because errno can be mucked by user's signal handler and
most of pthread api heavily depends on errno to be correct, this change
should improve stability of the thread library.
MFC r216754:
Make EBR probe method less strictly to be able detect EBRs with
small non fatal inconsistency. EBR may contain boot loader and sometimes
it just has some garbage data. Now this does not prevent FreeBSD to use
extended partitions. But since we do not support bootcode for EBR we mark
tables which have non empty boot area as corrupt. This does make them
readonly and we can not damage this data.
MFC r223594:
EBR could contain an early stage of boot code. But we do not support it.
Remove message about non empty bootcode, we can not break something
while GEOM_PART_EBR_COMPAT is defined.
But without GEOM_PART_EBR_COMPAT any changes in EBR are allowed and we
can accidentally wipe the boot code. To do not break anything save
the first EBR chunk and keep it untouched each time when we are
changing EBR. Note that we are still not support boot code for EBR.
MFC r223587:
MS Windows NT+ uses 4 bytes at offset 0x1b8 in the MBR to identify
disk drive. The boot0cfg(8) utility preserves these 4 bytes when it is
writing bootcode to keep a multiboot ability.
Change gpart's bootcode method to keep DSN if it is not zero. Also
do not allow writing bootcode with size not equal to MBRSIZE.
MFC: r223954
Try and fix the exports.5 man page so that it clarifies how
NFSv4 exports are handled. Improved by comments from
mckusick, kudak at mit.edu and bde.
This is a content change.
- Sync with the latest version from NetBSD. It notably addds ISO9660 support.
- Add support for synthesizing an APM partition map to map Mac PowerPC
bootstrap partitions from the ISO9660 boot catalog. This preserves OS X's
ability to mount the CD, while allowing us a way to provide HFS-ified
bootstrap code for Open Firmware.
- Add analogs to the -chrp-boot and -prep-boot options to mkisofs.
marius [Tue, 26 Jul 2011 13:29:11 +0000 (13:29 +0000)]
MFC: r220389, r220392
- Mark getc() as inline, this has no effect on gcc but helps clang.
- Move getc() body before xgetc() so gcc does not emit a warning about function
having no body.
marius [Tue, 26 Jul 2011 13:23:25 +0000 (13:23 +0000)]
MFC: r218926
In sys/boot/i386/boot2/boot2.c, change the type of the 'opts' variable
from uint16_t back to uint32_t. The actual option bitmasks (RB_* and
RBX_*) assume at least a 32 bit variable.
marius [Tue, 26 Jul 2011 13:22:12 +0000 (13:22 +0000)]
MFC: r218745
Remove reading of symbols from a.out loaded files. Since we are tight
on space for clang and a.out support is only needed for /boot/loader,
they are excess bytes that serve no useful purpose other than to
support really old kernels (FreeBSD < 3.2 or so). Prefer clang
support over support for these old kernels and remove this code. We
gain about 100 bytes of space this way.
marius [Tue, 26 Jul 2011 13:13:31 +0000 (13:13 +0000)]
MFC: r220685
MFi386: revisions 220389 and 220392
- Mark getc() as inline, this has no effect on gcc but helps clang.
- Move getc() body before xgetc() so gcc does not emit a warning about
function having no body.
marius [Tue, 26 Jul 2011 13:06:21 +0000 (13:06 +0000)]
MFC: r219225
MFi386: revision 219186
This patch shrinks boot2 a little.
o It switches kname to be just a pointer instead of an array.
o It changes ioctl to unsigned from uint8_t.
o It changes the second keyhit limit to 3 seconds from 5.
o It removes bi_basemem/bi_extmem/bi_memsizes_valid setting.
marius [Tue, 26 Jul 2011 12:57:23 +0000 (12:57 +0000)]
MFC: r212064, r212098
Use a cleaner expression to retrieve the memory size in pc98's boot2.c,
which also avoids NULL pointer arithmetic, as suggested by jhb. The
available space goes from 11 bytes to 7.
marius [Mon, 25 Jul 2011 23:01:08 +0000 (23:01 +0000)]
MFC: r223938
Since r219452 the alignment of __dmadat has changed, revealing that fsread()
bogusly casts its contents around causing alignment faults on sparc64 and
most likely also on at least powerpc. Fix this by copying the contents
bytewise instead as partly already done here. Solving this the right way
costs some space, i.e. 148 bytes with GCC and 16 bytes with clang on x86
there are still some bytes left there though, and an acceptable hack which
tricks the compiler into only using a 2-byte alignment instead of the native
one when accessing the contents turned out to even take up more space that.
MFC r222932: skel/.shrc: Improve commented CDPATH example for POSIX
requirements.
POSIX says an empty entry in CDPATH shall not result in the new directory
being printed, while any non-empty entry shall result in the new directory
being printed, including ".". Therefore, the value of CDPATH should almost
always start with a colon, not dot and colon.
Our sh does not print the name for empty entries as well as "." entries.
marius [Mon, 25 Jul 2011 21:44:35 +0000 (21:44 +0000)]
MFC: r218713, r218716
Apply a few small optimizations to boot2's code, to make it shrink a
little further. This gets us further on the way to be able to build it
successfully with clang. Using in-tree gcc, this shrinks boot2.bin with
60 bytes, the in-tree clang shaves off 72 bytes, and ToT clang 84 bytes.
MFC r224157:
Revert r222135 by allowing controller reinitialization. Due to
unknown reason Apple UniNorth2 gem(4) device required manual
interface down/up operation after r222135. Even though this is not
correct thing and I don't like to revert it but it would be better
than breaking gem(4) on PPC. This should be revisited.
MFC r224023,224060:
Document AX88772B and AX88760. AX88760 is treated as AX88772A in
driver.
Mention all ASIX USB controllers that are supported by axe(4).
Reword media types and explicly mention AX88178 is the only
controller that supports gigabit link.
While I'm here use shorten model instead of showing all controller
model numbers.
MFC r224020:
Add initial support for AX88772B USB Fast Ethernet. AX88772B
supports IPv4/IPv6 checksum offloading and VLAN tag insertion/
stripping as well as WOL. Because uether does not provide a way
to announce driver specific offload capabilities to upper stack,
checksum offloading support needs more work and will be done in
future.
Special thanks to ASIX for donating sample hardware.
marius [Mon, 25 Jul 2011 19:13:51 +0000 (19:13 +0000)]
MFC: r223986
- Expand the scope of the lock in the interrupt routine to close races with
checking IFF_DRV_RUNNING and simplify the code. This also involves holding
the driver lock in the rx_ch callout.
- Just use ifp instead of sc->sc_ifp.
marius [Mon, 25 Jul 2011 19:11:29 +0000 (19:11 +0000)]
MFC: r223984
PCIB_ALLOC_MSIX() may already fail on the first pass, f.e. when the PCI-PCI
bridge is blacklisted. In that case just return from pci_alloc_msix_method(),
otherwise we continue without a single MSI-X resource, causing subsequent
attempts to use the seemingly available resource to fail or when booting
verbose to NULL-dereference rle->start when trying to print the IRQ in
pci_alloc_msix_method().
marius [Mon, 25 Jul 2011 19:03:45 +0000 (19:03 +0000)]
MFC: r223961
- Remove redundant timecounter masking from counter_get_timecount().
- Zero the timecounter when allocation so we don't need to initialize unused
members and remove a now redundant NULL assignment.
marius [Mon, 25 Jul 2011 19:01:36 +0000 (19:01 +0000)]
MFC: r223960
- Current testing shows that (ab)using the JBC performance counter in bus
cycle mode as timecounter just works fine. My best guess is that a firmware
update has fixed this, so check at run-time whether it advances and use a
positive quality if it does. The latter will cause this timecounter to be
used instead of the tick counter based one, which just sucks for SMP.
- Remove a redundant NULL assignment from the timecounter initialization.
marius [Mon, 25 Jul 2011 18:59:45 +0000 (18:59 +0000)]
MFC: r223959
- Add a missing shift in schizo_get_timecount(). This happened to be non-fatal
as STX_CTRL_PERF_CNT_CNT0_SHIFT actually is zero, if we were using the
second counter in the upper 32 bits this would be required though as the MI
timecounter code doesn't support 64-bit counters/counter registers.
- Remove a redundant NULL assignment from the timecounter initialization.
marius [Mon, 25 Jul 2011 18:46:54 +0000 (18:46 +0000)]
MFC: r223795
Call pmap_qremove() before freeing or unwiring the pages, otherwise
there's a window during which a page can be re-used before its previous
mapping is removed.
marius [Mon, 25 Jul 2011 18:44:46 +0000 (18:44 +0000)]
MFC: r223721
UltraSPARC-IV CPUs seem to be affected by a not publicly documented
erratum causing them to trigger stray vector interrupts accompanied by a
state in which they even fault on locked TLB entries. Just retrying the
instruction in that case gets the CPU back on track though. OpenSolaris
also just ignores a certain number of stray vector interrupts.
While at it, implement the stray vector interrupt handling for SPARC64-VI
which use these for indicating uncorrectable errors in interrupt packets.
marius [Mon, 25 Jul 2011 18:41:52 +0000 (18:41 +0000)]
MFC: r223719
- For Cheetah- and Zeus-class CPUs don't flush all unlocked entries from
the TLBs in order to get rid of the user mappings but instead traverse
them an flush only the latter like we also do for the Spitfire-class.
Also flushing the unlocked kernel entries can cause instant faults which
when called from within cpu_switch() are handled with the scheduler lock
held which in turn can cause timeouts on the acquisition of the lock by
other CPUs. This was easily seen with a 16-core V890 but occasionally
also happened with 2-way machines.
While at it, move the SPARC64-V support code entirely to zeus.c. This
causes a little bit of duplication but is less confusing than partially
using Cheetah-class bits for these.
- For SPARC64-V ensure that 4-Mbyte page entries are stored in the 1024-
entry, 2-way set associative TLB.
- In {d,i}tlb_get_data_sun4u() turn off the interrupts in order to ensure
that ASI_{D,I}TLB_DATA_ACCESS_REG actually are read twice back-to-back.
Tested by: Peter Jeremy (16-core US-IV), Michael Moll (2-way SPARC64-V)