Matthew Dillon [Sat, 25 Jul 2015 02:40:41 +0000 (19:40 -0700)]
patch - Remove RCS and SCCS auto-checkout support
* Remove stale RCS and SCCS support which involves the patch(1) program
constructing a system() command using filename data supplied from the
file. DragonFly deems this to be too dangerous, quoted or not.
Security: CVE-2015-1416
Reported-by: Xin Li, Martin Natano
Nuno Antunes [Tue, 21 Jul 2015 07:34:24 +0000 (15:34 +0800)]
kernel/route: Use the netisr threads to initialize the route tables.
Reviewed-by: sephe
Tomohiro Kusumi [Fri, 24 Jul 2015 19:37:04 +0000 (04:37 +0900)]
sbin/hammer: Enable AssertOnFailure on -d for hammer show/checkmap
Tomohiro Kusumi [Fri, 24 Jul 2015 19:32:00 +0000 (04:32 +0900)]
sbin/hammer: Cleanup hammer checkmap
Tomohiro Kusumi [Fri, 24 Jul 2015 17:23:30 +0000 (02:23 +0900)]
sbin/hammer: Make hammer checkmap support zone4
- It's kind of obvious that zone4 never fails on checkmap tests,
but it was a missing zone as it already supports btree and undos.
- Note that this commit changes condition of error=-5 case in
blockmap_lookup() by adding "HAMMER_ZONE_FREEMAP_INDEX != zone &&".
This is necessary as zone4 is really just zone2 and all the
blockmap offsets have 0x02 in the upper 4 bits which means
blockmap lookup for zone4 offset always hits this assertion.
Normal filesystem operations (including other hammer commands
and newfs_hammer) never need this condition change as they never
lookup zone4 offset, and in fact blockmap lookup in kernel space
doesn't have this, however this commit needs it. This should make
sense though as zone4 really is an exceptional case where all
data is just a bunch of metadata that is made to effectively
map storage chunks to zone2.
- Update hammer(8). Now it supports all possible zones but
it only mentions btree elements.
Tomohiro Kusumi [Thu, 23 Jul 2015 20:41:51 +0000 (05:41 +0900)]
sbin/hammer: Use bitmaps for zone statistics
- Didn't squash this with the previous commit in order to be able
to go back to the previous one (rbtree version) for some reason.
Tomohiro Kusumi [Thu, 23 Jul 2015 20:35:50 +0000 (05:35 +0900)]
sbin/hammer: Make hammer show support zone statistics
- Update zone statistics while iterating btree and
print them after btree-walk is done.
- The zone statistics is enabled when -v is specified just
like hammer checkmap.
- hammer show's statistics use elm->leaf.data_len for used
bytes, so it could have different number from blockmap/
checkmap statistics (blockmap/checkmap statistics will
have the same or higher used bytes as well as percentage).
- Newly added item count is always 0 on blockmap/checkmap
statistics while it has >0 for zone 8,9,10,11 for show.
Both hammer blockmap/checkmap are not aware of items in
each big-block so they can't count items. The idea of
item is countable only when iterating btree.
Tomohiro Kusumi [Wed, 22 Jul 2015 19:14:52 +0000 (04:14 +0900)]
sbin/hammer: Make hammer blockmap support zone statistics
- Update zone statistics while iterating layer1/layer2 and
print them after layer-walk is done.
- The zone statistics is enabled when -v is specified just
like hammer checkmap.
Tomohiro Kusumi [Tue, 21 Jul 2015 19:15:06 +0000 (04:15 +0900)]
sbin/hammer: Add functions for zone statistics
- Add functions to init/cleanup/add/print zone statistics and
make hammer checkmap's existing zone statistics use these.
- hammer_print_zone_stat() shows something like this. Zones with
0 blocks doesn't necessary mean it has 0 block in that zone.
For example checkmap doesn't support zone4 (at this point) so
the block count is 0, but each volume obviously does have at
least 1 big-block that belongs to zone4.
==========
HAMMER zone statistics
zone # blocks used[B] used[%]
zone 0 0 0 0
zone 1 0 0 0
zone 2 0 0 0
zone 3 63
528482304 100
zone 4 0 0 0
zone 5 0 0 0
zone 6 0 0 0
zone 7 0 0 0
zone 8 5
38313984 91.3477
zone 9 2
15776736 94.0367
zone 10 326
2731311104 99.8766
zone 11 23
166333072 86.2106
zone 12 0 0 0
zone 13 0 0 0
zone 14 0 0 0
zone 15 0 0 0
--------------------------------------------------
total 419
3480217200 99.0153
==========
Tomohiro Kusumi [Tue, 21 Jul 2015 17:57:05 +0000 (02:57 +0900)]
sbin/hammer: Add struct zone_stat for generic zone statistics
- Nothing changes, but just replaces the existing hammer checkmap's
zone statistics with zone_stat[].
- This is for the next few commits that make hammer show/blockmap
/checkmap provide zone statistics to clarify storage consumption
by each zone. It's better to have a common data structure to
retrieve statistics of the same format from different view.
Imre Vadasz [Fri, 24 Jul 2015 19:22:33 +0000 (21:22 +0200)]
lm(4): Remove unneeded kernel configuration entries
John Marino [Fri, 24 Jul 2015 15:50:19 +0000 (17:50 +0200)]
LC_TIME locales: Regenerate to fix 23 locales' alt-months
The commit diff revealed a regression in the timedef on some locales.
All of these locales have alternative months defined in a separate
xml file used by the cdlr2def tool. The bug in the tool has been fixed,
and the locale definitions have been regenerated.
John Marino [Fri, 24 Jul 2015 15:46:02 +0000 (17:46 +0200)]
cldr2def tool: Fix alternative month generation
For some locales defined in tools/tools/locale/etc/charmaps.xml,
there are alternative month names defined in CDATA. When they are
not present, the POSIX months are just repeated, otherwise this CDATA
set is returned.
The problem is that the spaces and approximately half of the double
quotes were retained as part of the names. This modification will
strip off the white space and quotes to fix alternative month
definitions.
Sepherosa Ziehau [Fri, 24 Jul 2015 14:51:10 +0000 (22:51 +0800)]
mbuf: Add helper functions to inc/dec mbuf limits
While I'm here, refactor code a little bit.
Sepherosa Ziehau [Fri, 24 Jul 2015 14:40:15 +0000 (22:40 +0800)]
mbuf: Staticize mbupdatelimits
Sepherosa Ziehau [Fri, 24 Jul 2015 13:00:09 +0000 (21:00 +0800)]
mbuf: Don't allow mbuf thresholds be configured too low.
They still could be configured to a low value through tunables though.
Sepherosa Ziehau [Fri, 24 Jul 2015 12:59:25 +0000 (20:59 +0800)]
mbuf: Hold mbuf update lock, only if the thresholds are to be changed.
While I'm here, assert mbuf update lock in mbupdatelimits()
Sascha Wildner [Fri, 24 Jul 2015 10:48:12 +0000 (12:48 +0200)]
systat(1): Remove an unused extern.
Sascha Wildner [Fri, 24 Jul 2015 10:42:34 +0000 (12:42 +0200)]
kernel/usb4bsd: Remove bogus header file.
Sascha Wildner [Fri, 24 Jul 2015 10:42:08 +0000 (12:42 +0200)]
i386 removal, part 23/x: Remove i386 specific DEBUG_INTERRUPTS and remains.
Sascha Wildner [Fri, 24 Jul 2015 09:06:37 +0000 (11:06 +0200)]
i386 removal, part 22/x: Remove some i386 specific assembly language files.
John Marino [Thu, 23 Jul 2015 21:46:56 +0000 (23:46 +0200)]
Import generated locales (time, money, msg, numeric)
All the definitions were generated by the "new" tool located at
src/tools/tools/locale. It uses CLDR version 2.0.1 and Unicode
release 8.0.0.
The tool is smart enough to eliminate duplicates -- every one of
these real files is unique. The makefiles are also generated and
are much simpler.
John Marino [Fri, 24 Jul 2015 08:30:19 +0000 (10:30 +0200)]
cldr2def tool: Implement c_format generation
The time definitions were missing c_fmt. The patch I applied to make
the tool run caused it (it was always a bug, but I didn't fix it
correctly). The c_formats are not defined, so I'm taking the full
date-time format and stripping any %z or %Z timezone symbols that are
contained within. It's not perfect, but not too bad either considering.
Matthew Dillon [Fri, 24 Jul 2015 04:23:46 +0000 (21:23 -0700)]
kernel - Allow nmbufs, nmbclusters, and nmbjclusters to be adjusted live
* Refactor the sysctls for kern.ipc.nmbufs, kern.ipc.nmbclusters,
and kern.ipc.nmbjclusters, changing from read-only to read-write.
Use SYSCTL_PROC to automatically apply changes to the object caches.
* Add a function, mbupdatelimits(), which recalculates the objcache
limits based on nmbufs, nmbclusters, and nmbjclusters.
Matthew Dillon [Fri, 24 Jul 2015 04:22:20 +0000 (21:22 -0700)]
kernel - Add objcache_set_cluster_limit()
* Add objcache_set_cluster_limit() which allows the objcache cluster limit
for a particular objcache to be adjusted dynamically.
Matthew Dillon [Thu, 23 Jul 2015 21:53:49 +0000 (14:53 -0700)]
kernel - wbsio: support NCT6776F (0xc3); supported by lm(4) as W83627DHG (0xc1)
The sc_devid value of struct wbsio_softc is used to pass the device id
of the SUPERIO chipset to lm, so it can decide whether it's actually an
NCT6776F or the W83627DHG.
Taken-From: OpenBSD
Author: Imre Vadasz <imre@vdsz.com>
Submitted-by: vadaszi bug #2833
Matthew Dillon [Thu, 23 Jul 2015 21:22:32 +0000 (14:22 -0700)]
nmalloc - Improve incremental reallocs()
* Fix realloc() issue that caused unnecessary unmap/remap operations
due to the page coloring optimization.
* In addition, scale large reallocations by allowing more wiggle room
as the allocation becomes larger so overhead isn't quite as geometrically
bad for programs which do incremental realloc()s to huge sizes.
Initial-patch-by: vadaszi Bug #2832
John Marino [Thu, 23 Jul 2015 21:43:24 +0000 (23:43 +0200)]
locales/nls: Rename last three zh_han* files
I missed these on prior commit and it broke world.
Sascha Wildner [Thu, 23 Jul 2015 20:39:06 +0000 (22:39 +0200)]
i386 removal, part 21/x: Remove obsolete i386 specific USERCONFIG bits.
Even though some of this code was copied over to x86_64, this platform
never had the kernel support.
John Marino [Thu, 23 Jul 2015 21:17:21 +0000 (23:17 +0200)]
locales: Rename zh_han* to zh_Han* (capitalize)
John Marino [Thu, 23 Jul 2015 20:31:13 +0000 (22:31 +0200)]
locales: Import unused FreeBSD tool to generate locales
Five years ago, Edwin Groothuis put in a *LOT* of work to create a perl-
based tool that would use the latest Unicode release from The Unicode
Consortium <http://unicode.org> and the latest Unicode CLDR release from
the same organization, and generate all the locale defintions for numeric,
monetary, time, and messages, including generating a readable Makefile.
The tool has the ability to define the conversions from Unicode to lower
resolution formats. While there were some minor bugs in it, the tool now
works, but for reasons unknown to me right now, it was never imported into
FreeBSD, nor used to improve their localization 5 years ago.
I've generated the new locale definitions which will go in soon. Note
that the Unicode Consortium no longer provides the "posix" definitions
the tool reads, so these definitions are 3 years old. Supposedly they
provide tools to generate the POSIX definitions, but I haven't found them
yet. Once I do, I'll regenerate the locales with the latest CLDR.
Refer: https://wiki.freebsd.org/LocaleNewApproach
John Marino [Thu, 23 Jul 2015 17:40:19 +0000 (19:40 +0200)]
Move some locales before upcoming overhauls
Several locales are obsolete and have misleading names. This moves
many of them at once. An entry to the UPDATING files notifies what
the new locale options are for users of affected locales.
This is necessary because the upcoming locale updates are going to be
generated and we can avoid carrying ancient aliases over. Also note
that Serbia's change may not be complete until the entire locales are
updated.
Sascha Wildner [Thu, 23 Jul 2015 17:05:39 +0000 (19:05 +0200)]
i386 removal, part 20/x: Rename boot_pc32.8 -> boot_pc64.8
Sascha Wildner [Thu, 23 Jul 2015 16:15:49 +0000 (18:15 +0200)]
i386 removal, part 19/x: Remove bogus message in acpi's APM compat code.
Sascha Wildner [Thu, 23 Jul 2015 17:35:58 +0000 (19:35 +0200)]
kernel/kbdmux: Fix a panic upon 'shutdown -h now'.
Follow-up to
fc9700a1359c0dd3fa2c207933975ed59237ba2b.
Why it was ocurring just recently is not 100% clear. According to Matt
it might be a timing issue.
Reported-by: ChibaPet, charlie5
John Marino [Wed, 22 Jul 2015 21:14:50 +0000 (23:14 +0200)]
Remove no_NO (only use nb_NO and nn_NO)
There are only two variations of Norwegian: Bokmål or nynorsk, both of
which are equally official. These are established by law and governmental
policy: Bokmål (literally "book language") and Nynorsk (literally "new
Norwegian"). The Norwegian Language Council recommends the terms
"Newegian Bokmål" and "Norwegian Nynorsk" in English.
The no_NO variant is a holdover from when nb_NO and nn_NO were created.
In glibc, the old no_NO was kept as an alias to nb_NO. This option is
considered confusing and probably should have been removed years ago.
John Marino [Wed, 22 Jul 2015 17:08:43 +0000 (19:08 +0200)]
locales LC_NUMERIC: Overhaul completely wrong definitions
I have no idea how the UTF-8 definitions were created. They appear
to be grouped by (allegedly) similar countries with the same
definitions as other codesets. The assumption is wrong. I went through
every POSIX (UTF-8) definition on http://unicode.org and redefined all
UTF-8 locales. Besides being correct, there are 2 additional benefits:
1) The makefile is loads simpler, at least for UTF-8 part
2) This fixes a lot of locale failures on gcc testsuite
John Marino [Wed, 22 Jul 2015 13:39:12 +0000 (15:39 +0200)]
locales: Add 66 "@euro" symlinks, and UTF8 alias
While not documented, it appears that modifiers work. The only widely
used modifier is "@euro" which is an alias for ISO 8859-15 coded which
contains the Euro currently along with 7 other new symbols as compared
to ISO 8859-1. For all 33 localization sets that use la_LN.ISO8859-15
for LC_CTYPE, I'm creating an @euro and .ISO-8859-15@euro symlink to
them. These are still found on Linux and the .ISO-8859* extension is
the chosen linux format (this is unfortanately not standardized thus
BSD and Linux differ). Thus any use of @euro will probably also refer
to the Linux format and that's why I chose it.
For the same reason, .UTF8 versions (Linux) are being symlinked to
DragonFly's .UTF-8 versions. Symlinks are cheap.
John Marino [Wed, 22 Jul 2015 11:59:56 +0000 (13:59 +0200)]
make upgrade: Remove 122 dangling locale symlinks
The symlinks mechanism that created these extra symlinks has been fixed,
so now let's clean up the mess.
John Marino [Wed, 22 Jul 2015 11:54:22 +0000 (13:54 +0200)]
bsd.links.mk: Support symlinks to directories
Recently locales support utilized symlinks to directories. On the
second installworld, the links were followed and installed there,
creating dangling links. The commit forces symlinks to directories to
be removed before recreating them (as is done for files). The effect
on file symlinks is unchanged.
Sascha Wildner [Tue, 21 Jul 2015 17:25:16 +0000 (19:25 +0200)]
kernel/acpi_toshiba: Use NULL for pointers.
Tomohiro Kusumi [Tue, 21 Jul 2015 10:34:28 +0000 (19:34 +0900)]
sys/vfs/hammer: Fix comments
- Fix comments left unchanged in
1afb73cf. It seems the same comments
are still effective with rbtree.
Tomohiro Kusumi [Tue, 21 Jul 2015 10:34:00 +0000 (19:34 +0900)]
sys/vfs/hammer: Remove unused typedef
- hammer_seq_t was only used in the early days of hammer.
Tomohiro Kusumi [Mon, 20 Jul 2015 18:45:36 +0000 (03:45 +0900)]
sbin/hammer: Fix hammer checkmap big-block offset
- hammer checkmap wasn't showing the offset of big-block for each
layer2 within a layer1 correctly.
- (The checkmap for supported zones works the same, and there was
nothing nothing wrong with that, but offsets in output were not
correct)
Tomohiro Kusumi [Sun, 19 Jul 2015 20:30:07 +0000 (05:30 +0900)]
sbin/hammer: Make hammer blockmap print all blockmap offsets
- Add phys_offset and first_offset, where phys_offset points to
zone2 address of the layer1 big-block.
Tomohiro Kusumi [Sun, 19 Jul 2015 15:33:36 +0000 (00:33 +0900)]
sbin/hammer: Make hammer_parsedevs() initialize NumVolumes
- hammer_parsedevs() should initialize NumVolumes as well as
initializing volumes. This is as simple as incrementing the
counter each time setup_volume() is called.
- newfs_hammer can tell and initialize NumVolumes from argc,
however low-level hammer commands that use hammer_parsedevs()
can't do this because a blkdevs arg contains volumes joined
by ':'. These commands need a way to initialize NumVolumes.
Tomohiro Kusumi [Sun, 19 Jul 2015 10:40:16 +0000 (19:40 +0900)]
sbin/hammer: Cleanup AssertOnFailure assertions on blockmap lookup
- Since now that blockmap_lookup() has an unique 'error' value
for each error, the function can assert-0 at the end of the
function with the 'error' value when AssertOnFailure is set.
- This makes code clearer as the function doesn't have to have
two types of error check (assert-cond or goto-done-if-not-cond)
for 9 different error cases.
Tomohiro Kusumi [Sat, 18 Jul 2015 21:44:02 +0000 (06:44 +0900)]
sbin/hammer: Fix fill info of hammer show
- Printing big-block index within lower 60 bits (layer1/2 combined)
is not that useful. It should print an index within each layer.
- It dissects zoneX (where X is either of 8,9,10,11) offset into
layer1 index, layer2 index, big-block offset and prints those.
Tomohiro Kusumi [Sat, 18 Jul 2015 20:12:54 +0000 (05:12 +0900)]
sbin/hammer: Minor cleanups
- Some minor cleanups.
Sascha Wildner [Tue, 21 Jul 2015 07:03:43 +0000 (09:03 +0200)]
kernel/syscons: Enable kern.kms_console by default (if *kms.ko are loaded).
Matthew Dillon [Tue, 21 Jul 2015 04:01:52 +0000 (21:01 -0700)]
kernel - Hack pcm audio for firefox issue
* Observed that the firefox thread handling sound output winds up being
in a cpu-bound loop calling poll() on two descriptors, one being the
/dev/dsp descriptor. With some debugging, determined that this call
occurs with the sound buffer ~slightly less than half full.
The sound is generated via the dports/audio/alsa-plugins (oss) library,
but the poll() appears to come from the snd_pcm_ioplug subsystem. It
appears that this subsystem has a bug in it when pacing sound output,
it still polls and live-loops on the sound output descriptor even when
it has no new data to send to the decriptor.
* There could be something else going on here with assumptions made by
linux sound client code vs our implementation, but I don't know what
they might be.
* This is probably not the correct fix, but we hack in a change to not
generate POLLWR events until the sound buffer is at least half empty.
This matches up with observed behavior from the above subsystem and
prevents the cpu loop.
It should be harmless to other code using kqueue/select/poll.
Appears to fix firefox's live looping in poll() during sound and
video (w/sound) playback.
Matthew Dillon [Mon, 20 Jul 2015 18:27:49 +0000 (11:27 -0700)]
kernel - Fix pmap_change_attr() use cases.
* In DragonFly this function takes a page count, not a byte count.
some calls were made with a byte count, others with a page count.
Note that in FreeBSD this function takes a byte count, but after
reviewing the use cases I decided to normalize it all to a page count.
* Fixes reported DRM issues. Might also fix test branch ehci/ethernet
panics due to memory corruption when DRM is loaded.
Matthew Dillon [Mon, 20 Jul 2015 18:21:47 +0000 (11:21 -0700)]
kernel - Fix general MSI/interrupt issue with HDAA
* Testing on J1900, MSI didn't work and the normal interrupt mode
was stuck on, resulting in an interrupt storm.
* Problem was tracked down to a missing initialization of the WAKEEN
(wake enable) bits. Intel errata documentation clarifies that these bits
might not be cleared by a chip reset (since the idea is to support a
wake event).
On the J1900 some of these bits were found to be set, which caused
STATESTS to force an interrupt event and prevent additional
MSI events.
* Clearing the WAKEEN bits fixes the interrupt storm and MSI appears to
work again. STATESTS is only used to detect CODECs and there's no reason
to try to clear it (which would mess up driver reloads).
* Remove the QUIRK added in the previous commit.
* Reverse the resource hint test, run it after loading the quirk table
so it can override the quirk table.
Markus Pfeiffer [Mon, 20 Jul 2015 13:37:30 +0000 (14:37 +0100)]
usb4bsd/pci: Correct typo in bootverbose message
Matthew Dillon [Mon, 20 Jul 2015 06:41:42 +0000 (23:41 -0700)]
kernel - Quick Baytrail to disable MSI
* Intel hdac on valleyview (Baytrail id?) interrupt does not work with MSI,
quirk it off. This is a medium-end Atom cpu.
* Tested on Intel(R) Celeron(R) CPU J1900 @ 1.99GHz system.
Matthew Dillon [Mon, 20 Jul 2015 06:00:24 +0000 (23:00 -0700)]
drm - Add valleyview support
* Fix infininte loop during PCI iteration. The previous code was not
actually iterating, so any loop would wind up being infinite. Valleyview
triggers this issue.
* Fix improper register offset in intel_gpio_setup() (note, linux master
also made this fix in April).
* Allow hw.drm.debug to be modified with a sysctl.
Matthew Dillon [Mon, 20 Jul 2015 05:55:58 +0000 (22:55 -0700)]
kernel - Add valleyview PCI ids and support to agp.
* Add valleyview PCI ids and support.
* Fix a number of cases where gpu PCI space registers were being accessed
via the bridge. Parts of the GPU PCI space was replicated on the bridge
in the past, but not necessarily in the future and not in valleyview.
Matthew Dillon [Mon, 20 Jul 2015 05:52:09 +0000 (22:52 -0700)]
kernel - Add PCI functionality
* Add pci_iterate_class() for the drm code.
Sepherosa Ziehau [Fri, 17 Jul 2015 14:50:06 +0000 (22:50 +0800)]
powerd: Add options to limit CPU power domains' frequency
Sascha Wildner [Sun, 19 Jul 2015 18:36:00 +0000 (20:36 +0200)]
kernel/acpi: Prefer _BIX to _BIF for battery info if it is present.
As it is stated in the ACPI specification 6.0:
"The _BIF object is deprecated in lieu of _BIX in ACPI 4.0."
The seven additional fields of the package which _BIX returns
are skipped for now.
Sascha Wildner [Sun, 19 Jul 2015 18:03:33 +0000 (20:03 +0200)]
Stop removing /usr/include/machine/ieee.h via 'make upgrade' again.
It is now installed again.
Sascha Wildner [Sun, 19 Jul 2015 17:30:25 +0000 (19:30 +0200)]
kernel/usb4bsd: Fix buildkernel.
Sascha Wildner [Sun, 19 Jul 2015 11:46:05 +0000 (13:46 +0200)]
ddb: Add a command to call the ACPICA debugger if ACPI_DEBUG is specified.
Code stolen from AcpiDbUserCommands() but it won't AcpiTerminate() upon
"Exit" or "Quit" commands so that we may 'continue' from ddb.
Sascha Wildner [Sat, 2 May 2015 09:31:15 +0000 (11:31 +0200)]
kernel/kprintf: Implement the space flag, as in '% 7ld'.
The ACPICA debugger needs it for the 'Info Misc' command.
Sascha Wildner [Sun, 19 Jul 2015 10:34:45 +0000 (12:34 +0200)]
kernel/usb4bsd: Add device enumeration and port power disabling support.
Adds some sysctls/tunables, none of which are set by default.
John Marino [Sat, 18 Jul 2015 22:22:03 +0000 (00:22 +0200)]
gcc50: Change c++ locale handling
The biggest change is removing the modification of the specified locale.
Before locales without extensions were appended with ".UTF-8" and
modifiers (e.g. @euro) were silently stripped off.
The latter is probably a bad idea, and even if we want to continue doing
this (modifiers are not supported), it should be done at the library
level, not at c++ on gcc level. The no-extension problem has been solved
today by creating symlinks at /usr/share/locale.
The logic of the "gnu" support was mimicked by using newlocale, duplocale,
and freelocale. The generic version uses setlocale only. This patch will
be pushed upstream most likely.
Tomohiro Kusumi [Sat, 18 Jul 2015 15:41:22 +0000 (00:41 +0900)]
sbin/hammer: Make hammer blockmap show verbose info on -v
- Shows volume# and layer1/layer2 index or offset when -v(v) is used.
Tomohiro Kusumi [Sat, 18 Jul 2015 15:38:43 +0000 (00:38 +0900)]
sys/vfs/hammer: Add HAMMER_BLOCKMAP_LAYER[12]_INDEX()
- This commit adds HAMMER_BLOCKMAP_LAYER[12]_INDEX() which is
/=sizeof(layer[12]) version of HAMMER_BLOCKMAP_LAYER[12]_OFFSET().
- This is useful as it sometimes (the next commit, debugging, etc)
wants to retrieve an index of layer1/2 instead of an offset.
Tomohiro Kusumi [Sat, 18 Jul 2015 09:49:34 +0000 (18:49 +0900)]
sbin/hammer: Align zone# in hammer blockmap output
- Use printf("%-2d") for zone.
Tomohiro Kusumi [Sat, 18 Jul 2015 07:32:04 +0000 (16:32 +0900)]
sbin/newfs_hammer: Minor fixes
- It's better to call rel_volume() for the root volume here
without waiting for potential non-root ones to do it as
they all modifies the root volume.
- Also add assertions to ensure a caller calls this function
for the root volume first, and then non-root volumes.
(non-root volumes do += to these volume statistics)
Tomohiro Kusumi [Sat, 18 Jul 2015 06:57:31 +0000 (15:57 +0900)]
sbin/hammer: Remove modified1 flag
- modified1 isn't necessary and also the code is clearer without
this flag.
- Once layer1 big-block is initialized, the only thing allocator
has to do to layer1 is ++ or -- layer1->blocks_free and update
crc. So it's better to just update crc whenever layer1->blocks_free
got ++ or --.
John Marino [Sat, 18 Jul 2015 17:27:33 +0000 (19:27 +0200)]
default/compilers.conf: Fix include path
Reported by: zrj
John Marino [Sat, 18 Jul 2015 15:04:01 +0000 (17:04 +0200)]
OpenLIBM: Undefine two C99 macros
Martynas@openbsd believes that only fast FMA for float is implemented,
and that the double and long double versions are not "fast". This also
matches what FreeBSD has so I'm reverting these new definitions on his
recommendation.
John Marino [Sat, 18 Jul 2015 09:13:51 +0000 (11:13 +0200)]
Create short name locales
In other (non-BSD?) platforms, it's possible to use a locale such as
"en_GB". Up until now, this did not work on DragonFly. It required
a codeset as well, so if "en_GB.UTF-8" wasn't specified, setlocale
would fail.
Every locale except two has a version that uses the UTF-8 codeset,
so a symlink was created to these to create these territory locales.
The other two are
hi_IN => hi_IN.ISCII-DEV
la_LN => la_LN.ISO8859-1
This should improve cross-platform compatibility, and it will lead
to a change in gcc50 libstdc++ locale handling.
While here, set the "share" directory to build in parallel rather
than serially.
John Marino [Sat, 18 Jul 2015 07:27:06 +0000 (09:27 +0200)]
GCC50: Upgrade base compiler to GCC release 5.2
John Marino [Sat, 18 Jul 2015 07:51:54 +0000 (09:51 +0200)]
Merge branch 'vendor/GCC50'
John Marino [Sat, 18 Jul 2015 01:50:11 +0000 (03:50 +0200)]
Update gcc-50 to SVN version 225979 (gcc-5-branch)
This is equivalent to gcc 5.2 release plus a few additional commits
that came through when the gcc-5 branch reopened.
Last Changed Date: 2015-07-18 02:16:08 +0200 (Sat, 18 Jul 2015)
Nuno Antunes [Sat, 4 Aug 2012 08:03:23 +0000 (09:03 +0100)]
devfs: Use lwkt_domsg() instead of lwkt_sendmsg() + lwkt_waitport().
* lwkt_domsg() already implements the concept of synchronous message
execution, use it instead.
* The caller of devfs_msg_send_sync() has allocated the message and
keeps a reference to it, so we don't need to return the reference
back. Return the message error instead.
Nuno Antunes [Thu, 2 Aug 2012 11:41:14 +0000 (12:41 +0100)]
kernel: Use lwkt_domsg() instead of lwkt_sendmsg() + lwkt_waitmsg().
Sascha Wildner [Sat, 18 Jul 2015 03:12:00 +0000 (05:12 +0200)]
Sync ACPICA with Intel's version
20150717.
* Better partitioning between debugger and disassembler.
* Add 'Trace' command to the debugger.
* Add support for the TCPA table to compiler and template generator.
* Fix '!!' command issue in the debugger. This had already been committed.
* Various cleanups and fixes.
For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.
John Marino [Fri, 17 Jul 2015 23:15:16 +0000 (01:15 +0200)]
Remove now-unused hostapd source files from contrib
John Marino [Fri, 17 Jul 2015 22:23:10 +0000 (00:23 +0200)]
Disconnect hostapd from building in base
There is insufficient reason to have hostapd in base at all. Moveover,
this version is three releases behind and probably has several security
vulnerabilities. Users that need a wifi access point should install
net/hostapd instead which the latest release and patched for known
security issues.
approved-by: dillon
Tomohiro Kusumi [Fri, 17 Jul 2015 11:36:07 +0000 (20:36 +0900)]
sbin/hammer: Assert simplified blockmap allocator
- alloc_blockmap() is a simplified blockmap allocator of
kernel function hammer_blockmap_alloc() as the comment says.
alloc_blockmap() is not aware of layer1 boundary since it
lacks layer1 boundary check and zone wrap check. This still
works for newfs_hammer because it's guaranteed that the newfs
never hits layer1 boundary even in the worst case[*] when
there are 2^8 volumes and each volume is 2^52 bytes storage.
- This commit adds assertions to ensure it's safe to use the
simplified allocator. If a caller hits the assertions then
the program does more than what this allocator supports.
--
[*] In the worst case each volume has 2^(18-8) big-blocks
for layer2 metadata which totals (8[MB] * 1024) = 8[GB].
Other than layer2 metadata, the root volume has 1 big-block
for layer1 metadata, less than 128 big-blocks for undo fifo,
and 1 big-block for btree and meta zone each. These add up
to somewhere between 8-10[GB] but it's still far less than
a single layer1 capacity of 4[TB]. Non-root volumes consume
a bit less than the root volume since it only has layer2
metadata initially which also fits in a single layer1.
The blockmaps for the root and non-root volumes would look
something like the following.
volume#0
zone big-blocks note
==============================================================
4 1 2^18 * layer1 = 2^(18+5) = 8[MB]
4 1024 2^19 * layer2 * 1024 = 2^(19+4+10) = 8[GB]
3 n undo zone for undo fifo (n <= 128)
8 1 btree zone for root btree node
9 1 meta zone for root inode and pfs0
volume#N (0<N<256)
zone big-blocks note
==============================================================
4 1024 2^19 * layer2 * 1024 = 2^(19+4+10) = 8[GB]
Tomohiro Kusumi [Thu, 16 Jul 2015 15:50:05 +0000 (00:50 +0900)]
sbin/hammer: Fix wrong free big-blocks counter
- newfs_hammer needs to decrement extra 2 big-blocks from
vol0_stat_freebigblocks for zone 8 and 9.
- newfs_hammer has following three lines that allocate the root
inode, root btree node, and pfs0 metadata for zone 8 and 9,
however because alloc_blockmap() doesn't decrement vol0_stat
_freebigblocks when a blockmap first meets a new layer2,
the volume header shows vol0_stat_freebigblocks 2 more than
it actually is.
bnode = alloc_btree_element(&btree_off, &data_buffer0);
idata = alloc_meta_element(&data_off, sizeof(*idata), &data_buffer1);
pfsd = alloc_meta_element(&pfsd_off, sizeof(*pfsd), &data_buffer2);
- This also means vol0_stat_bigblocks and vol0_stat_freebigblocks
are not equal initially. This commit makes vol0_stat_bigblocks
equal (vol0_stat_freebigblocks + 2), while these two were equal
until this commit. This should make sense than decrementing
vol0_stat_bigblocks by 2 to make these two look the same,
because inodes and btree nodes allocated by regular filesystem
operations do decrement vol0_stat_freebigblocks whenever a new
big-block is allocated and those are counted as used big-blocks.
The initial inode, btree node and pfs shouldn't be an exception.
The diff of hammer info command right after newfs_hammer would
look like this.
==========
# diff -aNur ./before ./after
--- ./before 2015-07-17 03:17:10.
999193000 +0900
+++ ./after 2015-07-17 03:17:14.
649193000 +0900
@@ -1,17 +1,17 @@
<snip>
Big-block information
Total 178376
- Used 0 (0.00%)
+ Used 2 (0.00%) /* inode/btree/pfs0 */
Reserved 45 (0.03%)
- Free 178331 (99.97%)
+ Free 178329 (99.97%) /* 2 less than before */
Space information
No. Inodes 1
Total size 1.4T (
1496326340608 bytes)
- Used 0B (0.00%)
+ Used 16M (0.00%) /* 2x8[MB] more than before */
Reserved 360M (0.03%)
Free 1.4T (99.97%)
PFS information
==========
Tomohiro Kusumi [Thu, 16 Jul 2015 14:54:18 +0000 (23:54 +0900)]
sbin/hammer: Optimize layer1 crc update
- layer1->layer1_crc needs update only when layer1 metadata gets
modified. In this case, it needs update only when a blockmap finds
a new layer2 that hasn't been touched yet, because that's when
layer1 metadata's free layer2 count is decremented.
Tomohiro Kusumi [Thu, 16 Jul 2015 14:50:33 +0000 (23:50 +0900)]
sbin/hammer: Properly set modified flag for blockmap
- When a blockmap finds the current layer2 (that corresponds to
blockmap->next_offset) belongs to a different zone and go to
the next layer2 by incrementing blockmap->next_offset, it should
set modified flag just like other ones do.
- If this function is ever changed to goto fail; without exit(1);
on failure, then a blockmap whose next_offset got incremented
here may be left without ondisk update.
Tomohiro Kusumi [Wed, 15 Jul 2015 17:45:41 +0000 (02:45 +0900)]
sbin/hammer: Fix boundary check
- It should be (next_offset + bytes - 1).
- alloc_blockmap() has only been used by newfs_hammer for root
inode, btree root node, and pfs0 metadata, and these don't
cross 16KB boundary so there hasn't been any issue.
Tomohiro Kusumi [Tue, 14 Jul 2015 23:18:38 +0000 (08:18 +0900)]
sys/vfs/hammer: Make HAMMER_ENCODE() take zone index instead of base
- HAMMER_ENCODE() macro added in cbf2551 should have taken zone index
for the first argument, instead of directly importing zone base
based code from format_blockmap().
- The zone base arg and other two args having overwrapped bits is
confusing, and not really good for anything. If zone base has non
zero for non-zone-bits then those bits should go to other two args.
- (format_blockmap() has been changed to take zone/offset instead of
the encoded one, but no external programs will need this function.
The same for the HAMMER_ENCODE() macro)
Tomohiro Kusumi [Tue, 14 Jul 2015 22:22:33 +0000 (07:22 +0900)]
sys/vfs/hammer: Add zoneX version of hammer_xlate_to_zone2()
- Add hammer_xlate_to_zoneX() macro as a generic version of
hammer_xlate_to_zone2().
Tomohiro Kusumi [Tue, 14 Jul 2015 11:48:25 +0000 (20:48 +0900)]
sbin/hammer: Remove unnecessary zone encoding
- This zone encoding isn't necessary since *result_offp is already
'zone' offset. HAMMER_ZONE_ENCODE() only cuts off zone bits from
*result_offp and then |= with 'zone' for zone bits, which results
the same as *result_offp.
- Also the name of the local variable 'zone2_offset' should have been
'zoneX_offset' since zone depends on what the 'zone' value is.
John Marino [Fri, 17 Jul 2015 06:26:03 +0000 (08:26 +0200)]
OpenLIBM: local mod -- add back C99 macros
The math.h header of OpenBSD's library is missing some C99 macro
defintions. Most of these we had before. FP_FAST_FMA and FP_FAST_FMAL
are new, but I believe should have been defined before.
Reported by: swildner
Sepherosa Ziehau [Thu, 16 Jul 2015 14:17:21 +0000 (22:17 +0800)]
powerd.8: Fix comment about P-state effect on Intel CPUs
It looks like P-state still has effect on Intel E5 v2 CPUs at least.
Sepherosa Ziehau [Thu, 16 Jul 2015 14:13:30 +0000 (22:13 +0800)]
ipiq: Add description for ipi latency measurement sysctls
Suggested-by: swildner@
Sepherosa Ziehau [Thu, 16 Jul 2015 14:08:33 +0000 (22:08 +0800)]
sysperf/ipitest: Run latency tests on all available CPUs
3 CPUs are too small even for 2-way configuration.
Matthew Dillon [Fri, 17 Jul 2015 03:46:02 +0000 (20:46 -0700)]
kernel - Reduce ACPI dmesg spam a little
* Reduce repetitive 'MPTABLE: warning PCI int dst apic id %d...' warnings.
Matthew Dillon [Fri, 17 Jul 2015 03:30:12 +0000 (20:30 -0700)]
kernel - MFC
160de052b2 from FreeBSD (persist timer)
Avoid a situation where we do not set persist timer after a zero window
condition. If you send a 0-length packet, but there is data is the socket
buffer, and neither the rexmt or persist timer is already set, then
activate the persist timer.
Author: hiren <hiren@FreeBSD.org>
Taken-from: FreeBSD
Matthew Dillon [Fri, 17 Jul 2015 03:26:49 +0000 (20:26 -0700)]
kernel - Reduce mountroot intr_config_hook wait to 30 seconds
* Reduce the amount of time mountroot waits for storage busses and
devices to finish configuration from 60 seconds to 30 seconds.
* Fix rare races in the intr_config_hook API by adding a lock to
hook operations.
Matthew Dillon [Fri, 17 Jul 2015 03:21:11 +0000 (20:21 -0700)]
kernel - Fix mountroot / usb diskkey race.
* Use the intr_config_hook mechanism to prevent mountroot from running
until all usb busses have completed two scans. umass's CAM
intr_config_hook will take over once umass is detected.
* Pull the hw.usb.xhci.use_polling tunable out of USB_DEBUG and make it work
generally. Setting this feature in /boot/loader.conf to 1 forces xhci to
always poll.
The polling rate is not the best in the world with this commit so do
not expect good performance. Only use if your USB doesn't work due to
e.g. interrupt routing issues.
John Marino [Thu, 16 Jul 2015 14:10:58 +0000 (16:10 +0200)]
Fix installation of libm man page(s)
diagnosed-by: swildner
John Marino [Thu, 16 Jul 2015 13:22:17 +0000 (15:22 +0200)]
OpenLIBM: Replace complex ACOSH functions
The regression tests revealed a bug in the OpenBSD complex COSH
function implementation. The FreeBSD implementation has been brought in,
at least temporarily, to address the regression.
It is likely that the ASINH functions are deficient with the edge cases
as well, but they've been left alone for now. The OpenBSD complex
functions implementation probably needs to be reviewed and reworked based
on my review of the OpenSolaris libm and FreeBSD msun implementations