dragonfly.git
2 years agoRemove upc_{control,register} syscalls and everything that has to do with it.
Sascha Wildner [Wed, 12 Dec 2012 20:40:16 +0000 (21:40 +0100)]
Remove upc_{control,register} syscalls and everything that has to do with it.

It's no longer used for anything.

Requested-by: vsrinivas
Approved-by: dillon
2 years agobce: Disable RX max BDs based interrupt moderation
Sepherosa Ziehau [Tue, 11 Dec 2012 11:20:17 +0000 (19:20 +0800)]
bce: Disable RX max BDs based interrupt moderation

The RX max coalesce BDs is limited to 255, which means that the chip will
generate ~5800 interrupts/s when it sinks 1.48Mpps tiny packets.  However,
interrupt rate at 4500Hz is already enough for the chip to sink 1.48Mpps
tiny packets, so ticks based RX interrupt moderation should be prefered.

2 years agokernel/makesyscalls.sh: Fix copy/paste error.
Sascha Wildner [Wed, 12 Dec 2012 06:01:08 +0000 (07:01 +0100)]
kernel/makesyscalls.sh: Fix copy/paste error.

Reported-by: vsrinivas
2 years agokernel/makesyscalls.sh: Improve comment and regenerate all affected files.
Sascha Wildner [Tue, 11 Dec 2012 22:29:52 +0000 (23:29 +0100)]
kernel/makesyscalls.sh: Improve comment and regenerate all affected files.

2 years agokernel/makesyscalls.sh: Output a friendlier comment about how to regenerate.
Sascha Wildner [Tue, 11 Dec 2012 22:19:43 +0000 (23:19 +0100)]
kernel/makesyscalls.sh: Output a friendlier comment about how to regenerate.

2 years agokernel - Reduce the size of the callout wheel
Matthew Dillon [Mon, 10 Dec 2012 23:11:46 +0000 (15:11 -0800)]
kernel - Reduce the size of the callout wheel

* The callout wheel is per-cpu but ncallout is calculated based on memory.
  A system with many cpus tended to allocate an excessive amount of memory
  in aggregate for the callout wheels.

* Reduce the size of the per-cpu callout wheel by approximately a factor
  of (ncpus).  On a 16G machine with 8 cores, aggregate callout wheel
  allocations is reduced from 128MB to 16MB.

2 years agokernel - Fix softupdates panic with UFS
Matthew Dillon [Mon, 10 Dec 2012 23:02:01 +0000 (15:02 -0800)]
kernel - Fix softupdates panic with UFS

* If getdirtybuf() was unable to lookup a dirty buffer from the
  flush_pagedep_deps path, we need to retry the lookup, rather than
  proceeding through processing the diradd.

Reported-by: marino@
Submitted-by: vsrinivas
2 years agokernel - Remove unnecessary mplock from ata I/O path
Matthew Dillon [Mon, 10 Dec 2012 22:59:38 +0000 (14:59 -0800)]
kernel - Remove unnecessary mplock from ata I/O path

* ata_finish() doesn't need the MP Lock; moving it from taskqueue_swi
  to taskqueue_swi_mp will make sure it's not taken.

* Note that taskqueue_swi(_mp) will be processed when this ithread
  attempts to switch back to the thread it preempted. This means that
  taskqueue_swi(_mp) processing exclude processing further interrupts
  on the ithread while they're running. This may not be desirable and
  is different than taskqueue_swi / swi_* / setsoft* in FreeBSD 4.x.

Submitted-by: vsrinivas
2 years agokernel - Make UFS ihash table per-mount
Matthew Dillon [Mon, 10 Dec 2012 22:55:59 +0000 (14:55 -0800)]
kernel - Make UFS ihash table per-mount

* Make the UFS ihash table per-mount.

* Scale down the size of the hash table a bit so we have ~4 inodes per
  bucket instead of ~1.  Works fine for a single mount and this way
  multiple UFS mounts don't make [as] bloated kmalloc calls.

Submitted-by: vsrinivas
2 years agokernel - Fix bug (not reached in normal operation) in vm_map_set_wired_quick()
Matthew Dillon [Mon, 10 Dec 2012 22:37:28 +0000 (14:37 -0800)]
kernel - Fix bug (not reached in normal operation) in vm_map_set_wired_quick()

* Fix a bug where vm_map_set_wired_quick() only operated on the first
  vm_map_entry of a slab, and would panic if there were more.

* Slab allocations are only going to have one vm_map_entry anyway so the
  bug was never hit.  But we fix it anyway.

2 years agokernel - Fix debug output label
Matthew Dillon [Mon, 10 Dec 2012 22:35:39 +0000 (14:35 -0800)]
kernel - Fix debug output label

* Fix "rflags" to "eflags" in i386 kprintf() for smp_invltlb() debugging.

Reported-by: swildner
2 years agoFix buildkernel with 'options KTR' in the config.
Sascha Wildner [Mon, 10 Dec 2012 18:51:12 +0000 (19:51 +0100)]
Fix buildkernel with 'options KTR' in the config.

2 years agobge: Obey the RX polling count
Sepherosa Ziehau [Mon, 10 Dec 2012 12:31:28 +0000 (20:31 +0800)]
bge: Obey the RX polling count

2 years agobge: Avoid unnecessary local scope stack variable resetting
Sepherosa Ziehau [Mon, 10 Dec 2012 12:16:36 +0000 (20:16 +0800)]
bge: Avoid unnecessary local scope stack variable resetting

2 years agopolling: Add tunable for net.ifpoll.X.rx.user_frac
Sepherosa Ziehau [Mon, 10 Dec 2012 09:09:01 +0000 (17:09 +0800)]
polling: Add tunable for net.ifpoll.X.rx.user_frac

2 years agobnx: Avoid unnecessary local scope stack variable resetting
Sepherosa Ziehau [Mon, 10 Dec 2012 08:45:34 +0000 (16:45 +0800)]
bnx: Avoid unnecessary local scope stack variable resetting

2 years agoagp: Do not limit attachment to primary devices
François Tigeot [Sat, 8 Dec 2012 08:55:02 +0000 (09:55 +0100)]
agp: Do not limit attachment to primary devices

* PCIS_DISPLAY_VGA really corresponds to the first graphic device
  initialized by the BIOS at boot time.

* Recent Intel chips contain both AGP and graphic hardware, identified by
  the same PCI ids

* The agp device thus has no associated PCIS_DISPLAY_VGA flag when the
  Intel graphic device is not set as primary display in BIOS

* Tested with:
  - ATI Radeon X550 (primary graphic card)
  - Intel Xeon E3-1245v2 (agp device)

2 years agoagp: Add PCI ID for Ivy Bridge GT2 server variant
François Tigeot [Sat, 8 Dec 2012 07:40:29 +0000 (08:40 +0100)]
agp: Add PCI ID for Ivy Bridge GT2 server variant

2 years agoagp: A rewrite of the i810 bits of the driver
François Tigeot [Sat, 8 Dec 2012 22:31:50 +0000 (23:31 +0100)]
agp: A rewrite of the i810 bits of the driver

New driver supports operations required by GEMified i915.ko. It
also attaches to SandyBridge and IvyBridge CPU northbridges now.

Obtained-from: FreeBSD

2 years agobnx: Obey the RX polling count
Sepherosa Ziehau [Sun, 9 Dec 2012 13:12:09 +0000 (21:12 +0800)]
bnx: Obey the RX polling count

2 years agoigb: The RDT writing thresh should be tested w/ ">=" instead of ">"
Sepherosa Ziehau [Sun, 9 Dec 2012 13:08:08 +0000 (21:08 +0800)]
igb: The RDT writing thresh should be tested w/ ">=" instead of ">"

2 years agobnx: Remove redundant TX/RX index reading from polling code
Sepherosa Ziehau [Sun, 9 Dec 2012 12:15:49 +0000 (20:15 +0800)]
bnx: Remove redundant TX/RX index reading from polling code

2 years agokernel: Add cpu_wbinvd_on_all_cpus()
François Tigeot [Sun, 9 Dec 2012 08:38:08 +0000 (09:38 +0100)]
kernel: Add cpu_wbinvd_on_all_cpus()

This function invalidates cache on all active cpus

With-help-from: vsrinivas

2 years agopktgen: Fix csum_data setting for in_delayed_csum()
Sepherosa Ziehau [Sun, 9 Dec 2012 10:42:25 +0000 (18:42 +0800)]
pktgen: Fix csum_data setting for in_delayed_csum()

2 years agoigb: Improve tiny packets reception performance on low frequency CPU
Sepherosa Ziehau [Sun, 9 Dec 2012 06:36:20 +0000 (14:36 +0800)]
igb: Improve tiny packets reception performance on low frequency CPU

Update RDT register a little bit often, so the RX descriptors are made
to the NIC chip on a more regularly base:
The RDT register is updated after certain amount of RX descriptors are
added to the hardware RX ring.  The default value of the amount of RX
descriptors are 32.  This value could be further tuned by per-device
sysctl node hw.igbX.rxY_wreg.

The default value improves tiny packets reception performance w/ 82576
on AMD970@800Mhz under interrupt mode for single stream (1.28Mpps ->
1.48Mpps) and it does not increase CPU usage on AMD970@3500Mhz (CPU
usage stays @36%).

This commit does _not_ seem to affect the tiny packet reception
performance when the workload are evenly distributed to all CPUs.

2 years agokernel - Fix improper assertion panic in vinvalbuf()
Matthew Dillon [Sat, 8 Dec 2012 22:22:15 +0000 (14:22 -0800)]
kernel - Fix improper assertion panic in vinvalbuf()

* Related to the removal of vhold/vdrop from buffer cache buffers, the
  state of a vnode being cleaned can now contain more active buffers and
  I/O's at the time of the vinvalbuf() call.

* Remove the 'vinvalbuf: dirty bufs' assertion and panic.  It is no longer
  a correct assertion.  Note that we've also had sporatic reports of this
  panic even prior to the work so it might not have been a completely
  correct assertion before either.

* Rework the vinvalbuf buffer-flushing and I/O-waiting code a bit.  We
  have to wait for I/O at least once and it is probably a good idea to
  wait for I/O after each buffer flush pass too, to avoid live-locks.

Reported-by: vsrinivas
2 years agokernel: add VM_OBJECT_LOCK/UNLOCK macros
François Tigeot [Mon, 6 Aug 2012 05:41:50 +0000 (07:41 +0200)]
kernel: add VM_OBJECT_LOCK/UNLOCK macros

2 years agoDocumentation: MPASS conversion
François Tigeot [Sat, 8 Dec 2012 21:09:49 +0000 (22:09 +0100)]
Documentation: MPASS conversion

2 years agokernel: Remove MPASS{,4} entirely and use KKASSERT instead.
Sascha Wildner [Sat, 8 Dec 2012 20:58:34 +0000 (21:58 +0100)]
kernel: Remove MPASS{,4} entirely and use KKASSERT instead.

In-discussion-with: ftigeot

2 years agokernel: Move MPASS and MPASS4 definitions around
François Tigeot [Mon, 6 Aug 2012 07:04:58 +0000 (09:04 +0200)]
kernel: Move MPASS and MPASS4 definitions around

They are generic enough to be used in the entire kernel, no need to
keep them in an acpica-specific file.

2 years agokernel: Import sglist subsystem from FreeBSD
François Tigeot [Mon, 6 Aug 2012 08:37:47 +0000 (10:37 +0200)]
kernel: Import sglist subsystem from FreeBSD

Fixes-from: swildner
Blessed-by: vsrinivas
2 years agokernel - Adjust NFS server for new allocvnode() code
Matthew Dillon [Sat, 8 Dec 2012 05:21:55 +0000 (21:21 -0800)]
kernel - Adjust NFS server for new allocvnode() code

* Adjust the NFS server to check for LWP_MP_VNLRU garbage collection
  requests and act on them.

  This prevents excessive allocation of vnodes by the nfsd's.

2 years agokernel - Change allocvnode() to not recursively block freeing vnodes
Matthew Dillon [Sat, 8 Dec 2012 02:52:30 +0000 (18:52 -0800)]
kernel - Change allocvnode() to not recursively block freeing vnodes

allocvnode() has caused many deadlock issues over the years, including
recent issues with softupdates, because it is often called from deep
within VFS modules and attempts to clean and free unrelated vnodes when
the vnode limit is reached to make room for the new one.

* numvnodes is not protected by any locks and needs atomic ops.

* Change allocvnode() to always allocate and not attempt to free
  other vnodes.

* allocvnode() now flags the LWP to handle reducing the number of vnodes
  in the system as of when it returns to userland instead.  Consolidate
  several flags into a single conditional function call, lwpuserret().

  When triggered, this code will do a limited scan of the free list to
  try to find vnodes to free.

* The vnlru_proc_wait() code existed to handle a separate algorithm
  related to vnodes with cached buffers and VM pages but represented
  a major bottleneck in the system.

  Remove vnlru_proc_wait() and allow vnodes with buffers and/or non-empty
  VM objects to be placed on the free list.

  This also requires not vhold()ing the vnode for related buffer cache
  buffer since the vnode will not go away until related buffers have been
  cleaned out.  We shouldn't need those holds.

Testing-by: vsrinivas
2 years agokernel - Fix filesystem lookup error due to parent directory recyclement race
Matthew Dillon [Fri, 7 Dec 2012 22:44:26 +0000 (14:44 -0800)]
kernel - Fix filesystem lookup error due to parent directory recyclement race

* When looking up a path the parent ncp's vnode is needed to pass into
  the VFS code as the directory vnode (dvp) for the element being looked up.

* Fix a timing race whereby a system under extreme vnode pressure (such as
  when kern.maxvnodes is set to a very low value) can squeek in recyclement
  of this directory vnode when there are no children under it in the
  namecache.

  We fix the problem by holding the directory vnode during the nlookup() and
  cache_resolve().

2 years agokernel - Fix issues where tmpfs loses file data
Matthew Dillon [Fri, 7 Dec 2012 22:20:31 +0000 (14:20 -0800)]
kernel - Fix issues where tmpfs loses file data

* For TMPFS, UIO_NOCOPY writes must use bawrite() or bwrite() and must NEVER
  used buwrite() because these operations are being called via the VM page
  cleaning code via the pageout daemon or the vnode termination code
  (when maxvnodes is reached), and the underlying pages are about to be
  destroyed.

* vm_object_terminate() must call vinvalbuf() both before (for normal
  filesystems) and also after (for tmpfs style filesystems).  Otherwise
  buffers potentially not disposed of during the page cleaning might
  get left hanging.  This is a safety feature.

* Remove post-flush test code from vm_object_page_collect_flush() entirely.
  The IO's are in progress at this point so it makes no sense to set
  PG_CLEANCHK here.

* vm_page_need_commit() must make the object writeable and dirty, I think.

* Fix multiple places where m->dirty is tested and PG_NEED_COMMIT is not.

Reported-by: vsrinivas, others
2 years agoetc/Makefile: Some cleanup.
Sascha Wildner [Fri, 7 Dec 2012 20:31:05 +0000 (21:31 +0100)]
etc/Makefile: Some cleanup.

* Stop creating .profile and .cshrc symlinks in the / directory.

* Silence a bmake warning (the check only applies to i386).

Reported-by: ftigeot, sephe
While here, simplify the way /COPYRIGHT is installed.

2 years agorc.conf.5: Document rc.conf.d/
Sascha Wildner [Fri, 7 Dec 2012 18:18:59 +0000 (19:18 +0100)]
rc.conf.5: Document rc.conf.d/

Taken-from:     FreeBSD
Pointed-out-by: fgudin
2 years agoiso639: Sync with Library of Congress list.
Sascha Wildner [Fri, 7 Dec 2012 11:54:14 +0000 (12:54 +0100)]
iso639: Sync with Library of Congress list.

2 years agoRemove MFILES from kernel module Makefiles. It should not be needed.
Sascha Wildner [Thu, 6 Dec 2012 11:06:06 +0000 (12:06 +0100)]
Remove MFILES from kernel module Makefiles. It should not be needed.

2 years agokern.fwd.mk: Move comments to the start of the line.
Sascha Wildner [Thu, 6 Dec 2012 10:54:31 +0000 (11:54 +0100)]
kern.fwd.mk: Move comments to the start of the line.

Else they would get output to the screen.

Reported-by: tuxillo
2 years agoagp(4): Fix some minor issues.
Sascha Wildner [Thu, 6 Dec 2012 09:36:21 +0000 (10:36 +0100)]
agp(4): Fix some minor issues.

* Move AGP_DEBUG to the global 'options' file. No need to split it by
  platform.

* Add missing file to the Makefile.

* Fix a cast.

2 years agotwe(4): Sync with FreeBSD.
Sascha Wildner [Wed, 5 Dec 2012 22:28:33 +0000 (23:28 +0100)]
twe(4): Sync with FreeBSD.

Main change is making it MPSAFE. There's also some cleanup and misc
fixes.

I tested it with an Escalade 8506-8.

2 years agoRemove some unneeded semicolons across the tree.
Sascha Wildner [Wed, 5 Dec 2012 20:21:22 +0000 (21:21 +0100)]
Remove some unneeded semicolons across the tree.

2 years agokernel - Fix memory starvation issue w/tmpfs
Matthew Dillon [Wed, 5 Dec 2012 19:40:01 +0000 (11:40 -0800)]
kernel - Fix memory starvation issue w/tmpfs

* TMPFS relies on the pagedaemon to retire dirty pages to swap.  The normal
  buffer cache flushing won't do the job (nor do we want it to).  To avoid
  starving the system we change bio_page_alloc() to not dig into the
  system reserve when allocating pages for TMPFS.

Reported-by: tuxillo (Antonio Huete)
2 years agoagp: Fix a kernel panic on boot issue
François Tigeot [Wed, 5 Dec 2012 07:19:40 +0000 (08:19 +0100)]
agp: Fix a kernel panic on boot issue

* A pointer wasn't correctly initialized, leading to a
  Fatal trap 12: page fault while in kernel mode panic

* This commit fixes bug report #2467

Tested-by: Eric Christeson, David Shao
2 years agocluster - Stabilization
Matthew Dillon [Wed, 5 Dec 2012 07:32:30 +0000 (23:32 -0800)]
cluster - Stabilization

* Fix disconnect/reconnect sequence for autoconn (/etc/hammer2/autoconn).
  The pipe used to signal termination of the iocom_core() was not supposed
  to be closed by iocom_done().

* The shutdown code now simply sets DMSG_IOCOMF_EOF instead of trying to
  shutdown() the socket.

* Fix double mutex lock in dmsg_msg_alloc().

2 years agocluster - xdisk automatic BIO restart
Matthew Dillon [Wed, 5 Dec 2012 03:24:54 +0000 (19:24 -0800)]
cluster - xdisk automatic BIO restart

* The xdisk driver now detects failed transactions due to failed circuits
  and will restart the BIOs on another circuit or hold onto them until
  connectivity is restored and a new circuit is reforged.

  Automatic restarts only occur if the xa* disk is open()'d (i.e. mounted
  or being accessed by userland).  Kernel disk subsystem probes on attach
  will be failed normally and not stall on lost connectivity.

* subr_diskiocom now reports the correct DMSG error code for failed BIOs
  instead of reporting a kernel error code.

2 years agocluster - misc cleanup
Matthew Dillon [Wed, 5 Dec 2012 03:23:54 +0000 (19:23 -0800)]
cluster - misc cleanup

* Rename the routing function to something that I remember.

2 years agocluster - misc work
Matthew Dillon [Tue, 4 Dec 2012 22:30:42 +0000 (14:30 -0800)]
cluster - misc work

* Use a different API function for state-based reply in the volconf code.

2 years agocluster - Improve hammer2 connect directive, add /etc/hammer2/autoconn
Matthew Dillon [Tue, 4 Dec 2012 22:23:22 +0000 (14:23 -0800)]
cluster - Improve hammer2 connect directive, add /etc/hammer2/autoconn

* Improve the hammer2 connect directive, fixing a socket descriptor reuse
  race.

* Monitor the file /etc/hammer2/autoconn which contains a list of hosts
  the hammer2 service demon whould automatically maintain connections to.

* Adjust the dmsg_master_service() API to also allow an alternative
  signalling descriptor and callback to be specified.  This simplifies
  forced connection terminations.

* Fix descriptor leak in dmsg_master_service() on closure.

2 years agoFix LINT building.
Sascha Wildner [Tue, 4 Dec 2012 19:37:30 +0000 (20:37 +0100)]
Fix LINT building.

2 years agotwe(4): Remove non-existing flag from the Makefile.
Sascha Wildner [Tue, 4 Dec 2012 19:20:03 +0000 (20:20 +0100)]
twe(4): Remove non-existing flag from the Makefile.

2 years agokernel: Remove NULL checks after kmalloc(..., M_INTWAIT).
Sascha Wildner [Tue, 4 Dec 2012 18:43:47 +0000 (19:43 +0100)]
kernel: Remove NULL checks after kmalloc(..., M_INTWAIT).

M_INTWAIT will not return NULL unless M_NULLOK is passed too.

2 years agoagp: Fix a handful of issues with via agp support
rnoland [Mon, 21 Dec 2009 03:28:05 +0000 (03:28 +0000)]
agp: Fix a handful of issues with via agp support

  * Read the pci capability register to identify AGP 3 support
  * Add missing smaller aperture sizes for AGP3 chips.
  * Fix the aperture size calculation on AGP2 chips.
    All sizes between 32M and 256M reported as 256M.
  * Add \n to error string.

This all seems to get the CLE266 EPIA-M board agp working properly

Obtained-from: FreeBSD

2 years agoagp: Sync with FreeBSD
François Tigeot [Tue, 4 Dec 2012 07:16:33 +0000 (08:16 +0100)]
agp: Sync with FreeBSD

* Add support for AMD64 Family 10h processors. FreeBSD PR: kern/128331
* Add a few VIA bridges for Intel Core/Core 2 and VIA Nano processors
* Fix AGP debugging code
* Rename agp_x86_64.c to agp_amd64.c again, keeping the same file name
  on both DragonFly and FreeBSD
* Fix prototypes to be consistent
* offset parameter has vm_offset_t type
* vm_offset_t is unsigned and therefore can not be negative
* Use si_drv1 instead of dev2unit() inside agp(4).
* i810: Aperture size and stolen memory are now printed on one line
* Add pci ids for Intel Ironlake chipsets

2 years agocluster - Kernel cluster code work
Matthew Dillon [Tue, 4 Dec 2012 06:01:57 +0000 (22:01 -0800)]
cluster - Kernel cluster code work

* Major stability work.

* Misc bug fixes and cleanups.

* xdisk/diskiocom links are now relatively stable over a real network.
  Still need to deal with reconnects properly.

2 years agocluster - Add 'circ <msgid>' command to cluster debug shell
Matthew Dillon [Tue, 4 Dec 2012 06:00:37 +0000 (22:00 -0800)]
cluster - Add 'circ <msgid>' command to cluster debug shell

* Add a debug shell command to help test virtual circuits.

2 years agocluster - more libdmsg work
Matthew Dillon [Tue, 4 Dec 2012 05:58:16 +0000 (21:58 -0800)]
cluster - more libdmsg work

* Fix numerous bugs, including a nasty edge case in the encryption code.

* Do a better job locking things (state structures still need help).

2 years agokernel - Reorder dsched teardown to fix race
Matthew Dillon [Mon, 3 Dec 2012 18:20:29 +0000 (10:20 -0800)]
kernel - Reorder dsched teardown to fix race

* Remove the struct disk from its list prior to tearing down the device
  instead of after in order to fix a race related to disk enumerations.

* Wait for active references on the disk structure to go away before
  tearing down the device.

2 years agocluster - Major kernel component work (diskiocom, xdisk, kdmsg)
Matthew Dillon [Mon, 3 Dec 2012 05:40:13 +0000 (21:40 -0800)]
cluster - Major kernel component work (diskiocom, xdisk, kdmsg)

* Major implementation and stabilization work.  Fix lots of bugs,
  improve the AUTO flags and APIs.

* xdisk and diskiocom are now operational for the first time.

  xdisk is a consumer of remote block devices.  You pass it one end of
  a pipe and use an ioctl to create /dev/xa* devices.  The kernel's
  nominal disk management subsystem handles /dev/serno/* and will also
  probe the /dev/xa* devices to create the slices.

  diskiocom is a block device service.  An ioctl is used to connect a
  raw disk device to the network via a pipe.

* The hammer2 service demon ties the two together over the network.

* Initial testing with a local hammer2 service daemon looping da0 to xa0
  succeeded, ~46MB/sec unoptimized using dd.

2 years agocluster - circuit tracking, bug fixes
Matthew Dillon [Mon, 3 Dec 2012 05:37:55 +0000 (21:37 -0800)]
cluster - circuit tracking, bug fixes

* Misc virtual circuit tracking work and bug fixes

2 years agojme: Improve tiny packets transmission performance on low frequency CPU
Sepherosa Ziehau [Mon, 3 Dec 2012 01:53:20 +0000 (09:53 +0800)]
jme: Improve tiny packets transmission performance on low frequency CPU

Update TXCSR register a little bit often; mainly to improve timeliness of
packets transmission:
The TXCSR register is updated after certain amount of TX descriptors are
added to the hardware TX ring.  The default value of the amount of TX
descriptors are 16.  This value could be further tuned by per-device sysctl
node hw.jmeX.tx_wreg.

The default value improves tiny packets transmission performance w/ JMC250
on AMD970@2200Mhz (831Kpps -> 911Kpps), on AMD970@800Mhz (484Kpps -> 834Kpps)
and it does not increase CPU usage on AMD970@3500Mhz (CPU usage stays @26%,
JMC250 could only do 911Kpps).

2 years agobge: Improve tiny packets transmission performance on low frequency CPU
Sepherosa Ziehau [Sun, 2 Dec 2012 12:30:40 +0000 (20:30 +0800)]
bge: Improve tiny packets transmission performance on low frequency CPU

Update TX HOST_PROD register a little bit often; mainly to improve
timeliness of packets transmission:
The TX HOST_PROD register is updated after certain amount of TX
descriptors are added to the hardware TX ring.  The default value of the
amount of TX descriptors are 16.  This value could be further tuned by
per-device sysctl node hw.bgeX.tx_wreg.

The default value improves tiny packets transmission performance w/ 5721
on AMD970@800Mhz (770Kpps -> 800Kpps) and it does not increase CPU usage
on AMD970@3500Mhz (CPU usage stays @20%, 5721 could only do 810Kpps).

NOTE: Tuning hw.bgeX.tx_coal_bds to 32 could make packets transmission
performance w/ 5721 on AMD970@800Mhz to be 810Kpps, however, this shows
no performance improvement on commonly used CPU frequency like 2200Mhz
and 3500Mhz.  And this tuning could burden systems not using polling(4).

2 years agobge: Commit coalesce parameters change in polling code
Sepherosa Ziehau [Sun, 2 Dec 2012 10:42:37 +0000 (18:42 +0800)]
bge: Commit coalesce parameters change in polling code

2 years agomount_ntfs.8: Fix synopsis and add another example (from FreeBSD).
Sascha Wildner [Sun, 2 Dec 2012 23:36:26 +0000 (00:36 +0100)]
mount_ntfs.8: Fix synopsis and add another example (from FreeBSD).

2 years agokernel/ntfs: Remove two unused variables.
Sascha Wildner [Sun, 2 Dec 2012 17:55:41 +0000 (18:55 +0100)]
kernel/ntfs: Remove two unused variables.

2 years agokernel/ntfs: Add ntfs_statvfs.
Sascha Wildner [Sun, 2 Dec 2012 17:47:48 +0000 (18:47 +0100)]
kernel/ntfs: Add ntfs_statvfs.

This fixes for example df output for large filesystems.

2 years agoifconfig.8: Fix month
Sascha Wildner [Sun, 2 Dec 2012 10:22:38 +0000 (11:22 +0100)]
ifconfig.8: Fix month

2 years agomake upgrade: Remove /usr/include/bus/isa/isa_compat.h
Sascha Wildner [Sat, 1 Dec 2012 23:16:47 +0000 (00:16 +0100)]
make upgrade: Remove /usr/include/bus/isa/isa_compat.h

2 years agokernel/i386: With stl(4) and cy(4) made PCI only, remove COMPAT_OLDISA.
Sascha Wildner [Sat, 1 Dec 2012 23:09:09 +0000 (00:09 +0100)]
kernel/i386: With stl(4) and cy(4) made PCI only, remove COMPAT_OLDISA.

2 years agoUPDATING: Note that aic(4) was deISAized (forgot to mention at the time).
Sascha Wildner [Sat, 1 Dec 2012 22:54:54 +0000 (23:54 +0100)]
UPDATING: Note that aic(4) was deISAized (forgot to mention at the time).

2 years agocy(4): Remove ISA support.
Sascha Wildner [Sat, 1 Dec 2012 22:46:53 +0000 (23:46 +0100)]
cy(4): Remove ISA support.

2 years agokernel: Remove an #include I forgot previously.
Sascha Wildner [Sat, 1 Dec 2012 22:24:50 +0000 (23:24 +0100)]
kernel: Remove an #include I forgot previously.

2 years agokernel - Turn off machdep.pmap_mmu_optimize by default
Matthew Dillon [Sat, 1 Dec 2012 20:53:19 +0000 (12:53 -0800)]
kernel - Turn off machdep.pmap_mmu_optimize by default

* Turn off machdep.pmap_mmu_optimize by default.  There are some bugs that
  need to be resolved which are messing up both apache and rtorrent.

* (this feature is already turned off by default on RELEASE).

2 years agoMove stlstats(8) to usr.sbin/
Sascha Wildner [Sat, 1 Dec 2012 17:59:16 +0000 (18:59 +0100)]
Move stlstats(8) to usr.sbin/

2 years agoRemove stli(4). Also remove ISA support from stl(4).
Sascha Wildner [Sat, 1 Dec 2012 17:48:21 +0000 (18:48 +0100)]
Remove stli(4). Also remove ISA support from stl(4).

stli(4) was ISA only. stl(4) was for ISA/PCI controllers.

The stlload(8) and stlstty(8) utilities were for ISA controllers only,
so remove them too (along with ISA only firmware).

While here, clean up stl(4) a bit.

2 years agoUPDATING: Mention that bt(4) is PCI only now.
Sascha Wildner [Sat, 1 Dec 2012 12:44:28 +0000 (13:44 +0100)]
UPDATING: Mention that bt(4) is PCI only now.

2 years agoUPDATING: Use release version numbers.
Sascha Wildner [Sat, 1 Dec 2012 12:42:55 +0000 (13:42 +0100)]
UPDATING: Use release version numbers.

2 years agocluster - remote block device work
Matthew Dillon [Sat, 1 Dec 2012 10:24:49 +0000 (02:24 -0800)]
cluster - remote block device work

* xdisk(client) <-> diskiocom(server) now successfully does a full
  message transaction over a VC for xa_open().  Still lots to do.

* Fix I/O request deferrals since the open can occur before the VC is
  fully established.  This fixes a deadlock.

* Fix state->msg tracking in kern_dmsg.c.  Fixes a double-free.

2 years agohammer2 - cluster / hammer2 service daemon work
Matthew Dillon [Fri, 30 Nov 2012 23:43:28 +0000 (15:43 -0800)]
hammer2 - cluster / hammer2 service daemon work

* Reformulate the service demon to use the updated libdmsg API

* Add code to track remote block device SPANs and to interface to the
  local /dev/xdisk to create local block devices for the remotes.

2 years agohammer2 - cluster / libdmsg circuit work
Matthew Dillon [Fri, 30 Nov 2012 23:39:12 +0000 (15:39 -0800)]
hammer2 - cluster / libdmsg circuit work

* Major work on the virtual circuit code.  Note there are still some thread
  races.

* Major work on the spanning tree code to allow for future symmetric
  pathing support.

* fs_label is now part of the RB tree compare, along with pfs_fsid.
  (e.g. the serial number for BLK protocol services).

* Rip out the 'router' structure, replace with the 'circuit' structure.
  Embed circuit0 in the iocom.

2 years agohammer2 - reformualte cluster messaging interface
Matthew Dillon [Fri, 30 Nov 2012 23:37:17 +0000 (15:37 -0800)]
hammer2 - reformualte cluster messaging interface

* Reformulate the interface to use the revamped kern_dmsg.c API

2 years agokernel - Preliminary xdisk remote block driver for cluster
Matthew Dillon [Fri, 30 Nov 2012 23:35:44 +0000 (15:35 -0800)]
kernel - Preliminary xdisk remote block driver for cluster

* Basic infrastructure, ties into kern_dmsg.c cluster messaging system.
  (still a skeleton).

* Allows a userland program (aka hammer2 service) to add networked block
  devices to the local machine.

2 years agohammer2 - kernel cluster messaging support API work
Matthew Dillon [Fri, 30 Nov 2012 23:33:49 +0000 (15:33 -0800)]
hammer2 - kernel cluster messaging support API work

* Rework the API significantly

* Add circuit tracking and sniffing features

* Add flags to automate the LNK_CONN, LNK_SPAN, and LNK_CIRC state machines.

* Misc improvemenets.

2 years agokernel - Move dsched_disk_destroy_callback() call
Matthew Dillon [Fri, 30 Nov 2012 23:30:35 +0000 (15:30 -0800)]
kernel - Move dsched_disk_destroy_callback() call

* Move the dsched_disk_destroy_callback() call from the caller to the
  message handler to avoid racing a disk probe that might be running at
  the time (if a disk device is added and destroyed quickly).

2 years agokernel - Fix races in disk iteration and diskctx handling
Matthew Dillon [Fri, 30 Nov 2012 19:17:50 +0000 (11:17 -0800)]
kernel - Fix races in disk iteration and diskctx handling

* Add disk->d_refs to prevent a disk structure from being destroyed out
  from under an iteration.

* Redo the disk_enumeration() API to use markers and d_refs.

* Make adjustments to the dsched API.  In particular, do not return
  unreferenced tdio pointers in situations where they aren't used by
  the caller.

* Properly implement the ref count on the tdio's, one for each of the two
  lists the tdio belongs to, and ensure that dsched_thread_io_alloc()
  keeps an extra ref on the tdio after releasing the diskctx lock to prevent
  it from being ripped out while the code is pondering whether to place
  the tdio on the tdctx list.

* When deleting the tdio's for a tdctx try to destroy the diskctx.  That is,
  simply dereferencing it from the thread is not sufficient.

* When deleting the tdio's for a diskctx try to destroy the tdctx.  That is,
  simply dereferencing it from the diskctx is not sufficient.

* Handle destroy/ref races.

2 years agokernel: Fix typo (inavlid -> invalid).
Sascha Wildner [Fri, 30 Nov 2012 17:57:06 +0000 (18:57 +0100)]
kernel: Fix typo (inavlid -> invalid).

2 years agoint64_t is long on x86_64, and not always equivalent to long long.
Sascha Wildner [Thu, 29 Nov 2012 20:57:05 +0000 (21:57 +0100)]
int64_t is long on x86_64, and not always equivalent to long long.

Similarly, uint64_t is unsigned long.

For their min/max value definitions, change LL/ULL suffixes to L/UL.

The bug report has some C++ sample code that show issues resulting
from treating them as long long.

Reported-by: David Shao <davshao@gmail.com>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issues/2461>

2 years agobt(4): Sync with FreeBSD.
Sascha Wildner [Thu, 29 Nov 2012 17:20:48 +0000 (18:20 +0100)]
bt(4): Sync with FreeBSD.

Main change is making it MPSAFE.

Taken-from: FreeBSD

2 years agobpf: Use bpf global token instead mplock to protect bpf stuffs
Sepherosa Ziehau [Thu, 29 Nov 2012 09:16:06 +0000 (17:16 +0800)]
bpf: Use bpf global token instead mplock to protect bpf stuffs

Submitted-by: tuxillo@ w/ modification
2 years agososendudp: Try to optimize out the additional mbuf alloc on output path
Sepherosa Ziehau [Thu, 29 Nov 2012 05:55:02 +0000 (13:55 +0800)]
sosendudp: Try to optimize out the additional mbuf alloc on output path

This optimization leaves enough space at the beginning of the mbuf, so
later on M_PREPEND() probably will not allocate addition mbuf.

This probably will not benefit any data that will be fragmented, e.g. by
IPv4, so this optimization is only performed when the size of data and
max size of protocol+link headers fit into one mbuf cluster.

This optimization could be turned off by net.inet.udp.sosend_prepend,
which is on by default.

2 years agobt(4): Remove support for ISA adapters.
Sascha Wildner [Thu, 29 Nov 2012 00:52:11 +0000 (01:52 +0100)]
bt(4): Remove support for ISA adapters.

The driver also supports PCI cards and we do want to keep this support,
because it is offered by current VirtualBox, for example.

2 years ago<sys/errno.h>: Try to fix errno's declaration a bit better for C++.
Sascha Wildner [Wed, 28 Nov 2012 23:26:41 +0000 (00:26 +0100)]
<sys/errno.h>: Try to fix errno's declaration a bit better for C++.

The test code from the bug ticket seems to work with it at least.

Reported-by: David Shao <davshao@gmail.com>
Dragonfly-bug:      <http://bugs.dragonflybsd.org/issues/2463>
In-discussion-with: vsrinivas

2 years agokernel - Fix proc_reparent() race/assertion panic
Matthew Dillon [Wed, 28 Nov 2012 18:21:38 +0000 (10:21 -0800)]
kernel - Fix proc_reparent() race/assertion panic

* Fix proc_reparent() race/assertion panic.  p_pptr changes can race,
  and the procedure had an assertion for the case.  Recode the procedure
  to retry on a mismatch instead of assert.

* Also move the old-parent-wakeup code into the procedure so it is
  properly executed in all cases.

Reported-by: Peter Avalos
2 years agomax_linkhdr: Increase from 16 to 20; mainly to cooperate SW VLAN tagging
Sepherosa Ziehau [Wed, 28 Nov 2012 09:21:53 +0000 (17:21 +0800)]
max_linkhdr: Increase from 16 to 20; mainly to cooperate SW VLAN tagging

2 years agoinstaller: Clarity language when asking the user for time-date info.
Matthew Dillon [Tue, 27 Nov 2012 21:50:54 +0000 (13:50 -0800)]
installer: Clarity language when asking the user for time-date info.

* Clarity language when asking the user for time-date info so the
  user is not confused between UTC vs his or her selected timezone.
  The program wants the user to enter the time and date in his or her
  selected timezone.

2 years agovkernel - Add machdep.wall_cmos_clock sysctl.
Antonio Huete Jimenez [Mon, 26 Nov 2012 23:14:14 +0000 (00:14 +0100)]
vkernel - Add machdep.wall_cmos_clock sysctl.

Programs that rely on this sysctl won't exit due its absence
and they will consider CMOS doesn't keep the local time.
Note the sysctl is read-only so programs like adjkerntz(8)
won't be able to change it.

2 years agoinstaller: Fix handling of CMOS set to UTC vs. CMOS set to wall time.
Sascha Wildner [Mon, 26 Nov 2012 18:39:57 +0000 (19:39 +0100)]
installer: Fix handling of CMOS set to UTC vs. CMOS set to wall time.

It was reversed in the installer (compared to tzsetup(8)).

/etc/wall_cmos_clock needs to be created when the CMOS is set to the
time of the clock on the wall. While here, also add removing the file
in case the user selects 'CMOS set to UTC'. This is if he chose the
other setting previously and then tried again.

Reported-by: many
Dragonfly-bug: <http://bugs.dragonflybsd.org/issues/39>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issues/2060>

2 years agopolling: Increase default status polling fraction to 80
Sepherosa Ziehau [Mon, 26 Nov 2012 13:41:20 +0000 (21:41 +0800)]
polling: Increase default status polling fraction to 80

Before we bumped the polling frequency from 1000 to 2000, the status
polling fraction was 20; keep the original ratio.

2 years agobce: Commit coalesce parameters changes in polling code
Sepherosa Ziehau [Mon, 26 Nov 2012 13:38:48 +0000 (21:38 +0800)]
bce: Commit coalesce parameters changes in polling code