pfg [Fri, 29 Jun 2012 03:01:38 +0000 (03:01 +0000)]
MFC r237448:
Merge changes from upstream libedit.
Here we update most of the files to at least match the
version available in NetBSD's snapshot of 20091228. This
version was chosen because it still doesn't include wide
character support (UTF-8), which involves many changes and
new files.
jhb [Thu, 28 Jun 2012 21:24:09 +0000 (21:24 +0000)]
MFC 228161,230774,230822,236415:
Add a new -e flag to pciconf(8)'s list mode to display PCI error details.
Currently this dumps the status of any error bits in the PCI status register
and PCI-express device status register. It also lists any errors indicated
by version 1 of PCI-express Advanced Error Reporting (AER).
jhb [Thu, 28 Jun 2012 19:34:23 +0000 (19:34 +0000)]
MFC 236404:
Extend VERBOSE_SYSINIT to also print out the name of variables passed
to SYSINIT routines if they can be resolved via symbol look up in DDB.
To avoid false positives, only honor a name if the symbol resolves
exactly to the pointer value (no offset).
kib [Thu, 28 Jun 2012 14:26:55 +0000 (14:26 +0000)]
Fix unbounded-length malloc, controlled from usermode. The added check
is performed before exact size of the buffer is calculated, but the
buffer cannot have size greater then the total space allocated for
extended attributes. The existing check is executing with precise
size, but it is too late, since buffer needs to be allocated in
advance.
Also, adapt to uio_resid being of ssize_t type. Use lblktosize instead of
multiplying by fs block size by hand as well.
kib [Thu, 28 Jun 2012 14:13:45 +0000 (14:13 +0000)]
MFC r237058:
Eliminate the static buffer used to read the first page of the mapped
object, and eliminate the pread(2) call as well. Mmap the first
page of the object temporaly, and unmap it on error or last use.
Potentially, this leaves one-page gap between succeeding dlopen(3),
but there are other mmap(2) consumers as well.
Fix several cases were the whole mapping of the object leaked on error.
Use MAP_PREFAULT_READ for mmap(2) calls which map real object pages
pfg [Thu, 28 Jun 2012 01:02:50 +0000 (01:02 +0000)]
MFC r237406:
Bring a couple of fixes for gcc optimizations.
The GCC4.3 branch contains some optimization fixes
that were not considered regressions and therefore
were never backported. We are bringing a couple of
them that are under GPLv2 since they were made
before the license switch upstream.
jhb [Wed, 27 Jun 2012 21:12:15 +0000 (21:12 +0000)]
MFC 233925,236357:
Add new ktrace records for the start and end of VM faults. This gives
a pair of records similar to syscall entry and return that a user can
use to determine how long page faults take. The new ktrace records are
enabled via the 'p' trace type, but are not enabled in the default set of
trace points.
mm [Wed, 27 Jun 2012 11:59:57 +0000 (11:59 +0000)]
MFC r236823 (pjd):
ds_guid of 0 is special, as it is used by snapshot receive code to
differentiate between an incremental and full stream.
Be sure not to generate guid equal to 0.
Reported by: someone who saw 0 being generated as 64bit random guid
mav [Wed, 27 Jun 2012 11:02:35 +0000 (11:02 +0000)]
MFC r237398:
In camisr() clear CAM_SIM_ON_DONEQ flag after camisr_runqueue() purged SIM
done queue. Clearing it before caused extra SIM queueing in some cases.
It was invisible during normal operation, but during USB device unplug and
respective SIM destruction it could keep pointer on SIM without having
counted reference and as result crash the system by use afer free.
delphij [Wed, 27 Jun 2012 00:31:30 +0000 (00:31 +0000)]
MFC r237339:
Polish previous revision: if the fts_* routines have lstat()'ed the
directory entry then use the struct stat from that instead of doing
it again, and skip the rm_overwrite() call if fts_read() indicated
that the entry couldn't be a regular file.
Obtained from: OpenBSD
MFC r237284 (kevlo):
Fix potential symlink race condition in "rm -P" by adding a check
that the file we have opened is the one we expected. Also open in
non-blocking mode to avoid a potential hang with FIFOs.
eadler [Tue, 26 Jun 2012 03:05:17 +0000 (03:05 +0000)]
MFC r237259 r237260 r237329:
Allow users with RO privilege to the device to read the RO attributes. [0]
Add __unused macros to appropriate places in order to allow building
with WARNS=6 on base gcc, gcc46, and clang
mav [Mon, 25 Jun 2012 07:09:36 +0000 (07:09 +0000)]
MFC r237460:
Return CAM_SEL_TIMEOUT and CAM_DEV_NOT_THERE instead of CAM_TID_INVALID
and CAM_LUN_INVALID for case of missing devices. In removes tons of error
messages from CAM during bus scans.
Reported and tested by: Mike Tancsa <mike@sentex.net>
mav [Mon, 25 Jun 2012 07:06:58 +0000 (07:06 +0000)]
MFC r237446:
Don't print SCSI Queue Full and CAM_REQUEUE_REQ statuses as errors if they
were handled and retried. They are part of normal operation for SCSI TCQ.
rmacklem [Mon, 25 Jun 2012 01:48:18 +0000 (01:48 +0000)]
MFC: r237244
Fix the NFSv4 client for the case where mmap'd files are
written, but not msync'd by a process. A VOP_PUTPAGES()
called when VOP_RECLAIM() happens will usually fail, since
the NFSv4 Open has already been closed by VOP_INACTIVE().
Add a vm_object_page_clean() call to the NFSv4 client's
VOP_INACTIVE(), so that the write happens before the NFSv4
Open is closed. kib@ suggested using vgone() instead and
I will explore this, but this patch fixes things in the
meantime. For some reason, the VOP_PUTPAGES() is still
attaempted in VOP_RECLAIM(), but having this fail doesn't
cause any problems except a "stateid0 in write" being logged.
rmacklem [Sun, 24 Jun 2012 13:39:41 +0000 (13:39 +0000)]
MFC: r237200
Move the nfsrpc_close() call in ncl_reclaim() for the NFSv4 client
to below the vnode_destroy_vobject() call, since that is where
writes are flushed.
trasz [Sat, 23 Jun 2012 19:15:12 +0000 (19:15 +0000)]
MFC r234846:
Improve growfs(8) in a few ways; unfortunately, it's somewhat hard to untangle
them and commit separately.
1. Rewrite the way growfs(8) finds the device and mount point. This makes
it possible to use e.g. "growfs /mnt"; it's also used to display more
helpful messages.
2. Be more user-friendly, using descriptive messages, like this:
OK to grow filesystem on /dev/md0, mounted on /mnt, from 9.8GB to 20GB? [Yes/No]"
3. Allow to specify the size (-s option) just like with mdconfig(8), i.e. with
postfixes ("mdconfig -s 10g").4. Reload read-only filesystem after growing.
Reviewed by: kib, mckusick (earlier version)
Sponsored by: The FreeBSD Foundation
MFC r235079:
Fix offset calculation to actually rewrite the _last_ block.
trasz [Sat, 23 Jun 2012 19:03:42 +0000 (19:03 +0000)]
MFC r234178:
Remove block reallocation used to make room for the cylinder group
summary structure. From now on, when there is no room for it,
we simply allocate new one in a newly added cylinder group.
This patch removes a conditional in updcsloc(), reindents some code
there, and removes unused routines. I decided to do it this way instead
of disabling reallocation when the filesystem is live and leaving it
as it is otherwise, because this allows for removal of lots of complicated
and hard to test code. Also, conditionally disabling it would result
in a different layout in filesystems resized online and offline, which
would look somewhat weird.
Reviewed by: mckusick
No objections from: kib
Sponsored by: The FreeBSD Foundation
trasz [Sat, 23 Jun 2012 18:51:33 +0000 (18:51 +0000)]
MFC r227081 by ed@:
Add missing static keywords for global variables to tools in sbin/.
These tools declare global variables without using the static keyword,
even though their use is limited to a single C-file, or without placing
an extern declaration of them in the proper header file.
davide [Sat, 23 Jun 2012 17:46:42 +0000 (17:46 +0000)]
MFC r237196:
Disable hwpmc(4) support for Intel Xeon Sandy Bridge (Model 0x2D).
Due to some differences in MSRs between Xeon Sandy Bridge and Core Sandy
Bridge (Model 0x2A), wrmsr() may generate in a GP# fault exception and so a
panic of the machine.
davide [Sat, 23 Jun 2012 17:39:40 +0000 (17:39 +0000)]
MFC r237195:
The variable 'error' in sys_poll() is initialized in declaration to value
zero but in any case is overwritten by successive copyin(), making the
previous initialization useless. Remove this.
As an added bonus this fixes a style(9) bug.
mav [Sat, 23 Jun 2012 07:45:14 +0000 (07:45 +0000)]
MFC r237335:
Check status of cam_periph_hold() inside cdclose(). If cd device was
invalidated while open, cam_periph_hold() will return error and won't
get the reference. Following reference release will crash the system.
delphij [Sat, 23 Jun 2012 00:37:32 +0000 (00:37 +0000)]
MFC r237348:
Currently the code uses gzFile * for a zlib file descriptor, which
is not correct. The code works by accident because gzFile is
currently defined as void *, and internally it would be casted from
or to its real type.
A newer version of zlib will instead define it as a pointer to a
specific type pointer (namely, struct gzFile_s *). This therefore
would cause stricter checks and compiler would catch this type
mismatch.
This change does not cause any changes to the resulting binary,
as validated with md5(1).
marius [Thu, 21 Jun 2012 13:39:56 +0000 (13:39 +0000)]
MFC: r232582 (partial)
- Switch ARM to TLS Variant I.
- Fix TLS allocation for Variant I: both rtld and libc allocators
assume that tls_static_space includes space for TLS structure.
So increment calculated static size by the size of it.
ae [Thu, 21 Jun 2012 12:47:21 +0000 (12:47 +0000)]
MFC r237057:
Always reconstruct partition entries in the PMBR when Boot Camp is
disabled. This helps to easily recover from situations when PMBR is
damaged and contains no entries.
marius [Thu, 21 Jun 2012 11:23:38 +0000 (11:23 +0000)]
MFC: r235348, r236191, r236497
Add glue/support for the SAM9XE512-based Ethernut 5 boards. Currently,
all integrated and on-board peripherals except NAND Flash (missing NAND
framework/integration) are working.
marius [Thu, 21 Jun 2012 11:16:05 +0000 (11:16 +0000)]
MFC: r236496
- Loop up to 3 seconds when waiting for a device to get ready. [1]
- Make the device description match the driver name.
- Identify the chip variant based on the JEDEC and use that information
to use the proper values for page count, offset and size instead of
hardcoding a AT45DB642x with 2^N byte page support disabled.
- Take advantage of bioq_takefirst().
- Given that CONTINUOUS_ARRAY_READ_HF (0x0b) command isn't even mentioned
in Atmel's DataFlash Application Note, as suggested by the previous
comment may not work on all all devices and actually doesn't properly
on at least AT45DB321D (JEDEC 0x1f2701), rewrite at45d_task() to use
CONTINUOUS_ARRAY_READ (0xe8) for reading instead. This rewrite is laid
out in a way allowing to easily add support for BIO_DELETE later on.
- Add support for reads and writes not starting on a page boundary.
- Verify the flash content after writing.
- Let at45d_task() gracefully handle errors on SPI transfers and the
device not becoming ready afterwards again. [1]
- Use DEVMETHOD_END. [1]
- Use NULL instead of 0 for pointers. [1]
marius [Thu, 21 Jun 2012 11:10:49 +0000 (11:10 +0000)]
MFC: r237239
Revert the part of r236495 (MFC'ed to stable/9 in r237095) that
introduced checking of SPI_SR_TXEMPTY for TX transfer completion as
for reasons unknown this occasionally causes SPI_SR_RXBUFF and
SPI_SR_ENDRX to not rise.
In any case, once the RX part of the transfer is done it's obvious
that the preceding TX part had finished and checking of SPI_SR_TXEMPTY
was introduced to rule out a possible cause for the data corruption
mentioned in r236495 but which didn't turn out to be the problem
anyway.
marius [Thu, 21 Jun 2012 11:06:29 +0000 (11:06 +0000)]
MFC: r230242, r237102, r237236
- Add support for the FT2232 based egnite Turtelizer 2 JTAG/RS232 Adapter.
This includes adding support for skipping FTDI interfaces used for JTAG
leaving them for userland and just attaching to the RS232 half, similarly
to how the corresponding Linux drivers handles these kind of adapters.
While at it, sort uftdi_devs and return BUS_PROBE_SPECIFIC (because
uftdi_probe() alters the instance variables for better or worse as do
other probe routines of USB drivers) instead of 0.
- Remove duplicated entries for BeagleBone.
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.
- Remove some stray lines.
mav [Thu, 21 Jun 2012 10:28:59 +0000 (10:28 +0000)]
MFC r236952:
- Limit r214102 workaround to only x86. On arm it causes more problems
then solves because of cache coherency issues. This fixes periodic error
messages on console and command timeouts.
- Patch SATA PHY configuration for 65nm SoCs to improve SNR same as
Linux does.
mckusick [Thu, 21 Jun 2012 04:02:07 +0000 (04:02 +0000)]
MFC of 236937
In softdep_setup_inomapdep() we may have to allocate both inodedep
and bmsafemap dependency structures in inodedep_lookup() and
bmsafemap_lookup() respectively. The setup of these structures must
be done while holding the soft-dependency mutex. If the inodedep is
allocated first, it may be freed in the I/O completion callback when
the mutex is released to allocate the bmsafemap. If the bmsafemap is
allocated first, it may be freed in the I/O completion callback when
the mutex is released to allocate the inodedep.
To resolve this problem, bmsafemap_lookup has had a parameter added
that allows a pre-malloc'ed bmsafemap to be passed in so that it does
not need to release the mutex to create a new bmsafemap. The
softdep_setup_inomapdep() routine pre-malloc's a bmsafemap dependency
before acquiring the mutex and starting to build the inodedep with a
call to inodedep_lookup(). The subsequent call to bmsafemap_lookup()
is passed this pre-allocated bmsafemap entry so that it need not
release the mutex if it needs to create a new one.
mckusick [Thu, 21 Jun 2012 03:58:10 +0000 (03:58 +0000)]
MFC of 236825
When synchronously syncing a device (MNT_WAIT), wait for buffers
to become available. Otherwise we may excessively spin and fail
with ``fsync: giving up on dirty''.