dragonfly.git
9 years agoagp: Add more Haswell PCI IDs
François Tigeot [Mon, 11 Aug 2014 19:40:21 +0000 (21:40 +0200)]
agp: Add more Haswell PCI IDs

9 years agodrm/i915: Enable Haswell support
François Tigeot [Mon, 11 Aug 2014 09:58:41 +0000 (11:58 +0200)]
drm/i915: Enable Haswell support

* The drm/i915 driver includes its own set of PCI ids, making those in
  drm_pciids.h redundant. Remove i915/i930 ids from this file.

* Unfortunately our old drm code base expects to directly use device
  lists with a different format.

* Rewrite the i915_probe() routine to use the driver-included device
  list and patch a special-purpose, one-element list in the legacy
  format at runtime to make the old drm_attach() routine and associated
  code happy.

* At this point, Haswell GPUs still exhibit display corruption issues
  with 2D acceleration. Disabling it in xorg.conf is recommended.

9 years agodrm/i915: Sync i915_gem_evict.c with Linux 3.8.13
François Tigeot [Mon, 11 Aug 2014 08:51:35 +0000 (10:51 +0200)]
drm/i915: Sync i915_gem_evict.c with Linux 3.8.13

9 years agokernel - Fix PF SMP issues
Matthew Dillon [Sun, 10 Aug 2014 20:03:51 +0000 (13:03 -0700)]
kernel - Fix PF SMP issues

* Fix an address table scan race that can cause packets to not match.

* The same fix also fixes a NULL pointer dereference caused by the
  same scan race.

Reported-by: alexh (and testing too)
9 years agoagp/drm: Remove intel_gtt_get_bridge_device()
François Tigeot [Sun, 10 Aug 2014 08:37:01 +0000 (10:37 +0200)]
agp/drm: Remove intel_gtt_get_bridge_device()

9 years agoagp/drm: Rename agp_i810.h to intel-gtt.h
François Tigeot [Sun, 10 Aug 2014 08:04:58 +0000 (10:04 +0200)]
agp/drm: Rename agp_i810.h to intel-gtt.h

So that we use the same file name as Linux.

9 years agotools/netrate: Use FIONBIO to make the socket nonblocking
Sepherosa Ziehau [Sun, 10 Aug 2014 12:26:02 +0000 (20:26 +0800)]
tools/netrate: Use FIONBIO to make the socket nonblocking

9 years agotcp: Fix upper half (socket code) and so_port switching race.
Sepherosa Ziehau [Sun, 10 Aug 2014 12:22:12 +0000 (20:22 +0800)]
tcp: Fix upper half (socket code) and so_port switching race.

Use message put done receipt to change this socket's so_port, i.e. _after_
this message was put onto the target netisr's msgport but _before_ the
message could be pulled from the target netisr's msgport, so that:
- The upper half (socket code) will not see the new msgport before this
  message reaches the new msgport and messages for this socket will be
  ordered.
- This message will see the new msgport, when its handler is called in the
  target netisr.

Add comment about it and explain why the so_port switching should be done
in this commit's fashion.

Reported-by: dillon@
9 years agomsgport: Add message put done receipt support
Sepherosa Ziehau [Sun, 10 Aug 2014 11:42:58 +0000 (19:42 +0800)]
msgport: Add message put done receipt support

The receipt callback is called immediately after the message is put on to
the target msgport.  Complex operation is NOT allowed in this callback,
since it could be called w/ spinlock for spin msgports.

It will be used to fix the race between the upper half (socket code)
and the so_port switching.

9 years agodhclient - Change config 'ignore' directive behaviour.
Antonio Huete Jimenez [Sat, 9 Aug 2014 16:24:54 +0000 (18:24 +0200)]
dhclient - Change config 'ignore' directive behaviour.

- Change dhclient.conf directive 'ignore' to take a list of option names
  rather than list of option declarations. e.g. 'ignore routers;'
  instead of 'ignore routers 1.2.3.4;' The value in the declaration
  was being ignored anyway.
- While there clean up the related code a bit.

Taken-from: OpenBSD

9 years agodhclient - Do not update linkstat several times.
Antonio Huete Jimenez [Thu, 7 Aug 2014 19:11:13 +0000 (21:11 +0200)]
dhclient - Do not update linkstat several times.

- In the case where two RTM_IFINFO link changes occur immediately
  after each other (as in the case with trunk and probably vlan)
  dhclient missed the state change of the second interface.

Taken-from: OpenBSD

9 years agodhclient - Revert a4a242d4bd3b87eb38ccf205bb2784ada509ca3a
Antonio Huete Jimenez [Thu, 7 Aug 2014 19:06:42 +0000 (21:06 +0200)]
dhclient - Revert a4a242d4bd3b87eb38ccf205bb2784ada509ca3a

- Routing breaks if dhclient-script flushes the
  interface's routes when the interface is down.

Taken-from: OpenBSD

9 years agodhclient - Update OBSD Ids
Antonio Huete Jimenez [Thu, 7 Aug 2014 08:05:20 +0000 (10:05 +0200)]
dhclient - Update OBSD Ids

- RFC changes to the manual pages already there.

Taken-from: OpenBSD

9 years agodhclient - Remove saved resolv.conf to avoid problems.
Antonio Huete Jimenez [Thu, 7 Aug 2014 07:53:39 +0000 (09:53 +0200)]
dhclient - Remove saved resolv.conf to avoid problems.

- Once resolv.conf.saved has been copied back as
  resolv.conf, delete it so it isn't copied again the
  next time a dhclient goes away.

Taken-from: OpenBSD

9 years agodhclient - Refuse leases for already configured subnets.
Antonio Huete Jimenez [Thu, 7 Aug 2014 07:47:01 +0000 (09:47 +0200)]
dhclient - Refuse leases for already configured subnets.

Taken-from: OpenBSD

9 years agodhclient - When a link is lost, call dhclient-script with reason "FAIL".
Antonio Huete Jimenez [Sat, 2 Aug 2014 12:04:09 +0000 (14:04 +0200)]
dhclient - When a link is lost, call dhclient-script with reason "FAIL".

- This does the resolv.conf dance and removes 'dead' routes, rather than
  leaving these droppings behind.

- When dhclient is exiting after calling dhclient-script with "FAIL",
  give the script a couple of seconds to finish. Also pass the lease
  parameters (old_*) to dhclient-script so routes can be cleaned up
  in this path too.

Taken-from: OpenBSD

9 years agodhclient - Update reality correspondance of some comments.
Antonio Huete Jimenez [Sat, 2 Aug 2014 12:02:22 +0000 (14:02 +0200)]
dhclient - Update reality correspondance of some comments.

Taken-from: OpenBSD

9 years agodhclient - Missed a reinitialize_interface() declaration.
Antonio Huete Jimenez [Sat, 2 Aug 2014 12:01:21 +0000 (14:01 +0200)]
dhclient - Missed a reinitialize_interface() declaration.

Taken from: OpenBSD

9 years agodhclient - Nuke 'interfaces_invalidated' global variable.
Antonio Huete Jimenez [Sat, 2 Aug 2014 11:59:14 +0000 (13:59 +0200)]
dhclient - Nuke 'interfaces_invalidated' global variable.

- Since reinitialize_interface() was simply setting interfaces_invalidated
  to 0, nuke it too!
- Always update ifi->linkstat in dispatch() loop.

Taken-from: OpenBSD

9 years agodhclient - Nuke some comments.
Antonio Huete Jimenez [Sat, 2 Aug 2014 11:55:32 +0000 (13:55 +0200)]
dhclient - Nuke some comments.

- Nuke a bunch of annoying "/* Send a packet. */" comments above
  invocations to send_packet(), and similiar combinations.

Taken-from: OpenBSD

9 years agodhclient - No point having two copies of this file
Antonio Huete Jimenez [Fri, 1 Aug 2014 18:24:13 +0000 (20:24 +0200)]
dhclient - No point having two copies of this file

- This copy never got installed anyway.

Taken-from: OpenBSD

9 years agodhclient - Remove cur_time global.
Antonio Huete Jimenez [Fri, 1 Aug 2014 18:19:04 +0000 (20:19 +0200)]
dhclient - Remove cur_time global.

- Junk global cur_time, and use time(NULL) or local variables where
  time is checked multiple times. Add a set_timeout_interval() function
  to allow setting a timeout based on an interval from current time.

- Fixes issues with initial startup where the global cur_time was
  always old and caused initial DHCPDISCOVER or DHCPREQUEST packets
  to be sent multiple times. And probably other timeout related
  oddities.

Taken-from: OpenBSD

9 years agodhclient - Add ignore keyword to conf file.
Antonio Huete Jimenez [Fri, 1 Aug 2014 18:09:13 +0000 (20:09 +0200)]
dhclient - Add ignore keyword to conf file.

- Allows to ignore unwanted info from the server without
  necessarily speciyfing a supersede value.

Taken-from: OpenBSD

9 years agodhclient - Don't abandon time_t precision for intervals.
Antonio Huete Jimenez [Fri, 1 Aug 2014 17:43:37 +0000 (19:43 +0200)]
dhclient - Don't abandon time_t precision for intervals.

- Use (long long) and %lld when printing, rather than (int)and %d.
  Follows idiom used for 64-bit size_t and off_t.

Taken-from: OpenBSD

9 years agodhclient - Don't store a time_t into an int.
Antonio Huete Jimenez [Fri, 1 Aug 2014 17:41:32 +0000 (19:41 +0200)]
dhclient - Don't store a time_t into an int.

- Make the variable time_t.

Taken-from: OpenBSD

9 years agodhclient - Don't print time_t as %d
Antonio Huete Jimenez [Fri, 1 Aug 2014 17:36:21 +0000 (19:36 +0200)]
dhclient - Don't print time_t as %d

- Cast to (int) just in case time_t ever changes size.
  Values in these cases are intervals, i.e. (time_t - time_t)
  so int/%d will be fine.

Taken-from: OpenBSD

9 years agodhclient - Remove unused field 'next' from struct timeout.
Antonio Huete Jimenez [Fri, 1 Aug 2014 17:24:13 +0000 (19:24 +0200)]
dhclient - Remove unused field 'next' from struct timeout.

- There's only one timeout now, not a list.

Taken-from: OpenBSD

9 years agodhclient - State engine for packet processing.
Antonio Huete Jimenez [Fri, 1 Aug 2014 17:21:00 +0000 (19:21 +0200)]
dhclient - State engine for packet processing.

-  Time may have passed! Use cur_time in routing message processing.

Taken-from: OpenBSD

9 years agodrm/i915: Modesetting code rework
François Tigeot [Sat, 9 Aug 2014 06:47:40 +0000 (08:47 +0200)]
drm/i915: Modesetting code rework

* Video output handling, DPMS support and the modesetting part of the
  driver are now mostly in sync with Linux 3.8.13.

* We now have support for the new Haswell Digital Display Interfaces
  (DDI), which can be configured as DisplayPort, HDMI, DVI or eDP
  (embedded Displayport).
  We also support the Haswell Flexible Display Interface (FDI) used to
  drive VGA ports.

* This blog entry from Daniel Vetter contains more information:
  http://blog.ffwll.ch/2012/08/new-modeset-code.html

* This commit also adds a few unrelated changes which were hard to
  separate from the modesetting code. They are mostly about generic
  Haswell and Baytrail/Valleyview support and bugfixes or workarounds
  for older GPU issues.

9 years agokernel - Fix serialization bug in if_ath
Matthew Dillon [Fri, 8 Aug 2014 23:49:38 +0000 (16:49 -0700)]
kernel - Fix serialization bug in if_ath

* Fix a bug which was causing a serialization assertion to fail.

9 years agoinstaller: Remove a more or less arbitrary check of the swap size.
Sascha Wildner [Fri, 8 Aug 2014 17:15:41 +0000 (19:15 +0200)]
installer: Remove a more or less arbitrary check of the swap size.

Except for boxes which have lots of memory combined with a very very
small disk, the installer gives a sane default for swap size by itself
and if the user doesn't change it, all will be good.

However, if the user did choose to adjust the swap size and if it was
to below the main memory size, this check caused it not to be activated
and no dumpdev was written to the rc.conf of the installed system.

Instead of guessing around how much swap is needed to hold a dump,
adding warnings and whatnot, just assume that anyone who tinkers with
the offered defaults is intelligent enough to know possible
consequences and accept their choice in any case.

9 years agoboot - Fix two bugs in the ufs code.
Matthew Dillon [Fri, 8 Aug 2014 05:31:46 +0000 (22:31 -0700)]
boot - Fix two bugs in the ufs code.

* Fix an incorrect start f_seekp position on open().  When open()ing a path
  the fp is used for the directory search.  A seek position left over from
  the directory search can wind up being left in place after the file has
  been located and openned, causing the starting seek position to not be 0.

* Fixes problems with the boot loader not detecting valid modules or a
  valid kernel image.

* Handle an overflow case in fp->f_nindir[] initialization.  This case will
  not normally occur.

9 years agoboot - Add 'crc' command.
Matthew Dillon [Fri, 8 Aug 2014 05:31:13 +0000 (22:31 -0700)]
boot - Add 'crc' command.

* Add 'crc file...' command.  This command crc's the contents of a file.
  It can be used to help debug loader issues.

9 years agoinstaller - Fix time selection, again.
Matthew Dillon [Fri, 8 Aug 2014 02:06:49 +0000 (19:06 -0700)]
installer - Fix time selection, again.

* The installer asks you to input your local time.  This is separate from it
  asking you whether the CMOS clock is local or UTC.

* We previously fixed the CMOS clock local/UTC selection, but the local time
  entry was still broken.

* This patch sets the TZ environment variable for the installer itself so
  when you input your local time it actually does the correct local conversion
  for your time zone.  Otherwise the local conversion is done using GMT which
  is not right.

Reported-by: Don Allen
9 years agoAdjust things for OpenSSL-1.0.1i.
Sascha Wildner [Thu, 7 Aug 2014 22:31:48 +0000 (00:31 +0200)]
Adjust things for OpenSSL-1.0.1i.

9 years agoMerge branch 'vendor/OPENSSL'
Sascha Wildner [Thu, 7 Aug 2014 22:02:41 +0000 (00:02 +0200)]
Merge branch 'vendor/OPENSSL'

9 years agoImport OpenSSL-1.0.1i.
Sascha Wildner [Thu, 7 Aug 2014 22:00:01 +0000 (00:00 +0200)]
Import OpenSSL-1.0.1i.

9 years agoopenssl: Add our local changes on master.
Sascha Wildner [Thu, 7 Aug 2014 21:25:50 +0000 (23:25 +0200)]
openssl: Add our local changes on master.

9 years agoMerge branch 'vendor/OPENSSL'
Sascha Wildner [Thu, 7 Aug 2014 21:22:26 +0000 (23:22 +0200)]
Merge branch 'vendor/OPENSSL'

9 years agoopenssl: Remove some local changes from the vendor branch.
Sascha Wildner [Thu, 7 Aug 2014 21:22:05 +0000 (23:22 +0200)]
openssl: Remove some local changes from the vendor branch.

9 years agorc.d/ppp: add support for -unitN override
Alex Hornung [Thu, 7 Aug 2014 21:09:32 +0000 (22:09 +0100)]
rc.d/ppp: add support for -unitN override

 * Man page changes taken from FreeBSD.

9 years agoig4 - Fix minor documentation bug
Matthew Dillon [Thu, 7 Aug 2014 07:38:51 +0000 (00:38 -0700)]
ig4 - Fix minor documentation bug

* Fix minor doc bug in register definitions.

9 years agocyapa - Add sysctl for minimum pressure
Matthew Dillon [Thu, 7 Aug 2014 07:37:19 +0000 (00:37 -0700)]
cyapa - Add sysctl for minimum pressure

* Add a sysctl for minimum pressure to detect a finger.  Fingers below this
  value will be ignored.  Default to 16.

9 years agodrm/i915: Fix locking in i915_dma.c
François Tigeot [Wed, 6 Aug 2014 21:08:15 +0000 (23:08 +0200)]
drm/i915: Fix locking in i915_dma.c

Some i915_dma.c functions didn't include locking directives or used
them in a different order than Linux.

9 years agorc.subr: Add quietstart and pass through arguments to rc scripts.
Sascha Wildner [Wed, 6 Aug 2014 19:33:13 +0000 (21:33 +0200)]
rc.subr: Add quietstart and pass through arguments to rc scripts.

None of our scripts handle additional arguments yet but it will be
needed for moused starting/stopping via devd(8) and for bluetooth
too.

Taken-from: FreeBSD

9 years agolinux/err.h: Add IS_ERR_OR_NULL()
François Tigeot [Wed, 6 Aug 2014 13:31:41 +0000 (15:31 +0200)]
linux/err.h: Add IS_ERR_OR_NULL()

Obtained-from: OpenBSD

9 years agolinux/delay.h: Add mdelay()
François Tigeot [Wed, 6 Aug 2014 13:30:47 +0000 (15:30 +0200)]
linux/delay.h: Add mdelay()

Obtained-from: OpenBSD

9 years agolinux/kernel.h: Add WARN_ONCE()
François Tigeot [Wed, 6 Aug 2014 13:29:37 +0000 (15:29 +0200)]
linux/kernel.h: Add WARN_ONCE()

9 years agoFix logic error. Due to the bug, it incorrectly checked TXQ status
Michael Neumann [Tue, 5 Aug 2014 13:20:12 +0000 (15:20 +0200)]
Fix logic error. Due to the bug, it incorrectly checked TXQ status

which in turn can leave TXQ active.

Obtained From: FreeBSD (r218038 747546166f1055f5d23ef661fbc30e355f1d6fec)

9 years agoFix typo.
Michael Neumann [Tue, 5 Aug 2014 13:18:20 +0000 (15:18 +0200)]
Fix typo.

Obtained From: FreeBSD

9 years agoCorrect wrong definition of PM timer mask and adjust L1/PM timer
Michael Neumann [Tue, 5 Aug 2014 13:02:51 +0000 (15:02 +0200)]
Correct wrong definition of PM timer mask and adjust L1/PM timer

value. While I'm here enable all clocks before initializing
controller. This change should fix lockup issue seen on AR8152
v1.1 PCIe Fast Ethernet controller.

This fixes: http://bugs.dragonflybsd.org/issues/2625

Obtained-From: FreeBSD (r217649 d7200f3f19ae70c6fc623456c4e7ceda8e6f631d)

9 years agoDon't bother to enable ASPM L1 to save more power. Even though I am
Michael Neumann [Tue, 5 Aug 2014 12:46:44 +0000 (14:46 +0200)]
Don't bother to enable ASPM L1 to save more power. Even though I am

not able to trigger the issue with sample boards, some users seems
to suffer from freeze/lockup when system is booted without UTP cable
plugged in. I'm not sure whether this is BIOS issue or controller
bug. This change fixes AR8132 lockup issue seen on EEE PC.

Obtained-From: FreeBSD (r214542 d5b678ca0dc503e5c0ee4dde9d43cb0138def17c)

9 years agostatus bits should be &'ed against status to be really functional.
Michael Neumann [Tue, 5 Aug 2014 11:59:38 +0000 (13:59 +0200)]
status bits should be &'ed against status to be really functional.

Obtained-From: FreeBSD (r212764 d7bdcc10e4df9e7f755be4e1853272956eb39493)

9 years agoMake sure to disable RX MAC in alc_stop_mac(). Previously there was a logic error...
Michael Neumann [Tue, 5 Aug 2014 11:44:55 +0000 (13:44 +0200)]
Make sure to disable RX MAC in alc_stop_mac(). Previously there was a logic error which it always enabled RX MAC.

Obtained-From: FreeBSD (r211285 d05dbde94114fc2033995347b55de74f9bc8e40e)

9 years agonewfs_hammer2 - Set default compression and check modes
Matthew Dillon [Tue, 5 Aug 2014 07:06:31 +0000 (00:06 -0700)]
newfs_hammer2 - Set default compression and check modes

* When creating a new filesystem, make sure the directory inodes contain
  proper defaults for the compression and crc check mode.

9 years agohammer2 - Add directives for setting the check mode
Matthew Dillon [Tue, 5 Aug 2014 07:04:24 +0000 (00:04 -0700)]
hammer2 - Add directives for setting the check mode

* Add setcheck, setcrc32, and a few other directives for setting the
  crc check mode on a directory or file.  The inode and any new chains
  or modifications will inherit the mode.

* Make adjustments to stat and show to display more information.

9 years agohammer2 - Make the CRC check code programmable
Matthew Dillon [Tue, 5 Aug 2014 06:58:14 +0000 (23:58 -0700)]
hammer2 - Make the CRC check code programmable

* Add infrastructure to allow a CRC check code method request to be stored
  in an inode.  The method will be inherited by anything created under the
  inode.

* Refactor the check_algo and comp_algo encoding to make the distinction
  between the requests in ipdata fields and the actual specification stored
  in bref.methods.

* Make sure that the hidden directory inherits the iroot's algorithm
  specifications for consistency.

9 years agohammer2 - freemap and data check code
Matthew Dillon [Mon, 4 Aug 2014 08:11:46 +0000 (01:11 -0700)]
hammer2 - freemap and data check code

* Change the freemap to use 8 sets = ~32 reserved blocks instead of 14 sets.
  Use a straight iterator.  (TODO - must invalidate newer volumes if an older
  volume backup is mounted RW because freemap will become inconsistent).

* Update the freemap documentation.  Requires more work.

* MODIFY_OPTDATA can only skip to the end if chain->data is NULL in
  the BREF_TYPE_DATA case.  chain->data might not be NULL if the
  data chain represents a compressed device buffer.

* Add check code generation and testing.  Currently just kprintf()s a
  warning if the check code does not match.  Implement iscsi crc-32,
  sha-192 (this is sha-256 with the last 64 bits XOR'd into the first),
  and implement check generation and testing for all data, meta-data,
  and the freemap.  For Everything.  64-bit CRCs are not yet implemented.

* Fix a few cases where the DIO or the chain was not being properly
  dirtied prior to making modifications to the media contents via
  chain->data (this showed up because CRC tests were failing).

* Cleanup:

  - CHAIN_FORCECOW is no longer used, remove it.
  - Move FLUSH_DEPTH_LIMIT from hammer2.h to hammer2_flush.c.
  - Remove debug structures from the blockref check union.
  - Remove some #if 0'd code that is no longer applicable.

9 years agohammer2 - add crc checking skeleton
Matthew Dillon [Mon, 4 Aug 2014 08:10:06 +0000 (01:10 -0700)]
hammer2 - add crc checking skeleton

* Check meta-data crcs.  If verbose (-v) is specified, also check
  data crcs.

9 years agokernel/acpi_timer: Lower the bar for ACPI-fast on real and virtual machines.
Sascha Wildner [Sun, 3 Aug 2014 02:27:51 +0000 (04:27 +0200)]
kernel/acpi_timer: Lower the bar for ACPI-fast on real and virtual machines.

This brings in FreeBSD's revisions 220331-220369:

r220369 | jkim | 2011-04-05 20:40:19 +0200 (Tue, 05 Apr 2011) | 6 lines

Lower the bar for ACPI-fast on real machines slightly.  Empirical evidences
show that there are perfectly working PM timers with occasional "hiccups",
probably because of an SMI.  Now we ignore the maximum if it happens once in
the test loop and the width is small enough.  Also, relax normal width a bit
to count in a boundary case.

------------------------------------------------------------------------
r220336 | jkim | 2011-04-04 19:44:26 +0200 (Mon, 04 Apr 2011) | 3 lines

Always check the current minimum value to make the test more predictable.
Use INT32_MAX instead of an arbitrary big number for the initial minimum.

------------------------------------------------------------------------
r220333 | jkim | 2011-04-04 19:00:50 +0200 (Mon, 04 Apr 2011) | 5 lines

Lower the bar for ACPI-fast on virtual machines.  The current logic depends
on the fact that real hardware has almost fixed cost to read the ACPI timer.
It is virtually always false for hardware emulation and it makes no sense to
read it multiple times, which is already quite expensive for full emulation.

------------------------------------------------------------------------
r220331 | jkim | 2011-04-04 18:47:42 +0200 (Mon, 04 Apr 2011) | 2 lines

Add inline to acpi_timer_read() to reduce unnecessary jumps and calls.

9 years agokernel: Don't pass the size of the var as arg2 to sysctl_handle_int().
Sascha Wildner [Sun, 3 Aug 2014 01:08:37 +0000 (03:08 +0200)]
kernel: Don't pass the size of the var as arg2 to sysctl_handle_int().

arg1 (second parameter) is for passing a variable and arg2 (third
parameter) is for passing a constant (in which case arg1 is NULL).

9 years agoisp(4): Remove wrong D_DISK and add D_MPSAFE to ops.
Sascha Wildner [Sat, 2 Aug 2014 12:42:46 +0000 (14:42 +0200)]
isp(4): Remove wrong D_DISK and add D_MPSAFE to ops.

9 years agompt(4): Add D_MPSAFE to ops.
Sascha Wildner [Sat, 2 Aug 2014 12:42:25 +0000 (14:42 +0200)]
mpt(4): Add D_MPSAFE to ops.

9 years agokernel/usched: Make the bootverbose messages a bit more informative.
Sascha Wildner [Sat, 2 Aug 2014 12:27:31 +0000 (14:27 +0200)]
kernel/usched: Make the bootverbose messages a bit more informative.

Talk about which scheduler this is about.

While here, change Sibs -> siblings.

9 years agokernel: Add D_MPSAFE to the ops of mfi(4), mrsas(4) and twa(4).
Sascha Wildner [Sat, 2 Aug 2014 11:00:58 +0000 (13:00 +0200)]
kernel: Add D_MPSAFE to the ops of mfi(4), mrsas(4) and twa(4).

I overlooked it when I ported them.

9 years agomps(4): Add forgotten D_MPSAFE to dev_ops and use callout_init_mp().
Sascha Wildner [Sat, 2 Aug 2014 10:57:36 +0000 (12:57 +0200)]
mps(4): Add forgotten D_MPSAFE to dev_ops and use callout_init_mp().

9 years agociss(4): Add forgotten D_MPSAFE to dev_ops and use callout_init_mp().
Sascha Wildner [Sat, 2 Aug 2014 10:50:07 +0000 (12:50 +0200)]
ciss(4): Add forgotten D_MPSAFE to dev_ops and use callout_init_mp().

9 years agomps(4): Remove unnecessary assignment (cam_calc_geometry() sets it).
Sascha Wildner [Sat, 2 Aug 2014 10:14:31 +0000 (12:14 +0200)]
mps(4): Remove unnecessary assignment (cam_calc_geometry() sets it).

9 years agohammer2 - Get snapshots working again
Matthew Dillon [Fri, 1 Aug 2014 06:03:51 +0000 (23:03 -0700)]
hammer2 - Get snapshots working again

* Clean up null-pointer dereference panics and sequencing issues when
  creating a snapshot.

* Fix panic on mount if the requested label is not found or is not
  mountable.

* Automatically flush the snapshot before taking and automatically flush
  the super-root entry before returning.

9 years agohammer2 - Make snapshot directive more convenient
Matthew Dillon [Fri, 1 Aug 2014 06:01:16 +0000 (23:01 -0700)]
hammer2 - Make snapshot directive more convenient

* Make the snapshot directive more intuitive.  The optional arguments
  are now (1) the <path> to snapshot and (2) the PFS label to use.
  If not specified, the PFS label is named after the PFS the snapshot
  is taken from, the last component of the path being snapshotted,
  and the date and time.

* pfs-list now takes an optional argument pointing at a mounted hammer2
  filesystem.  -s <path> still works, it just isn't as intuitive.

9 years agohammer2 - major simplification 1/many (stabilization C)
Matthew Dillon [Fri, 1 Aug 2014 03:08:30 +0000 (20:08 -0700)]
hammer2 - major simplification 1/many (stabilization C)

* Remove lock-count test from write path where async reads can be
  queued.  Fixes false assertion.

* Deleted-but-still-open files are moved to a hidden directory, and on
  mount a scan is done to remove them.  The scan was improperly passing
  a NODATA flag when inode data is needed to do a proper stats rollup
  during the deletion.

9 years agohammer2 - Implement meta-data statistics rollup
Matthew Dillon [Fri, 1 Aug 2014 00:22:04 +0000 (17:22 -0700)]
hammer2 - Implement meta-data statistics rollup

* HAMMER2 keeps total recursive data and inode count statistics in each
  inode.  This means that one can determine how much storage is being
  used for an entire subdirectory tree simply by doing a 'hammer2 stat <dir>'.

* Implement this by storing temporary rollup adjustments in the hammer2_chain
  structure, then synchronizing those adjustments on insertions, deletions,
  and flushes.

  Generally speaking, the chain structure has a data_count, inode_count,
  data_count_up, and inode_count_up for temporary tracking.  The main count
  fields are applied to the current chain AND the parent, while the *_up
  fields are only applied to the parent.

  For example, when an inode is inserted its stored statistics must be
  applied to the parent (recursively), but not to itself.

* Preliminary implementation.

9 years agohammer2 - hammer2 stat adjustments
Matthew Dillon [Fri, 1 Aug 2014 00:14:20 +0000 (17:14 -0700)]
hammer2 - hammer2 stat adjustments

* Report inodes as a count rather than as 'bytes'.

9 years agokernel - Rule out vkernels from config hook delays.
Antonio Huete Jimenez [Thu, 31 Jul 2014 18:27:49 +0000 (20:27 +0200)]
kernel - Rule out vkernels from config hook delays.

9 years agoRemove duplicates in usbdevs, urtwn(4) and devd(8)'s usb.conf.
Sascha Wildner [Thu, 31 Jul 2014 17:40:43 +0000 (19:40 +0200)]
Remove duplicates in usbdevs, urtwn(4) and devd(8)'s usb.conf.

9 years agodrm/i915 - Fix double lock deadlock
Matthew Dillon [Thu, 31 Jul 2014 17:35:59 +0000 (10:35 -0700)]
drm/i915 - Fix double lock deadlock

* Fix an incorrect use wq_lock which was accidently double-locking instead
  of unlocking around a sleep.

* Fixes X lockups overnight in the presence of xscreensaver.  'gears'
  seems to trigger it.

9 years agohammer2 - major simplification 1/many (stabilization B)
Matthew Dillon [Thu, 31 Jul 2014 05:50:19 +0000 (22:50 -0700)]
hammer2 - major simplification 1/many (stabilization B)

* Change hammer2_cluster_bytes() to hammer2_cluster_need_resize()
  to check for cluster size mismatches against desired.  Used for
  data block resizing.

* Fix panic - allow data blocks to have a chain->dio.  This will be
  the case when compression or other data filters are used.

* Fix null pointer panic - chain->dio can be NULL for data blocks.

* Fix null pointer panic - hlinkp is allowed to be NULL in
  hammer2_unlink_file().

* Do not assert if a hardlink target cannot be found.  There is a known
  bug case when a directory is moved to another part of the topology
  where underlying hardlinks can get lost.  kprintf() instead.

* Fix inode deadlock, add missing inode unlock in hammer2_hardlink_find().

* Remove OBJTYPE_HARDLINK tests from hammer2_inode_lock_*().  It is no
  longer possible for an inode's chain to point to a hardlink pointer,
  it will always point to the hardlink target.

* Add some lock count tracking to the VOPs to catch left over locks on
  return.  (Note that read-ahead operations mess up the lock count because
  the shared lock is inherited by the async op, so lock count tracking
  is not done in code which handles logical file data).

* Hammer2 survives cpdup, blogbench fsx, fsstress

9 years agokernel/usb4bsd: Sync urtwn(4) with current FreeBSD.
Sascha Wildner [Wed, 30 Jul 2014 21:24:51 +0000 (23:24 +0200)]
kernel/usb4bsd: Sync urtwn(4) with current FreeBSD.

This adds support for several (RTL8188EU based) adapters, among other
changes.

It should also fix the hangs we were seeing (using usb_pause_ls() now).

Thanks to Max Herrgaard <herrgaard@gmail.com> for testing it on a
RTL8188EU based adapter and to Christian Koch <cfkoch@sdf.lonestar.org>
for testing it with a RTL8188CU based one (Adafruit USB WiFi).

9 years agohammer2 - major simplification 1/many (stabilization)
Matthew Dillon [Wed, 30 Jul 2014 21:16:18 +0000 (14:16 -0700)]
hammer2 - major simplification 1/many (stabilization)

* Remove the extra drop from hammer2_hardlink_consolidate().  It was dropping
  cdip in one path but not another.  The previous fix for the
  hammer2_inode_common_parent() use-cast flipped the problem around, but
  was otherwise correct (and more sane).

9 years agohammer2 - major simplification 1/many (stabilization)
Matthew Dillon [Wed, 30 Jul 2014 20:35:55 +0000 (13:35 -0700)]
hammer2 - major simplification 1/many (stabilization)

* Fix a dirty chain leak due to detached inodes and the delayed vnode
  deactivation that DragonFly does.  A cache_unlink() call was missing
  to properly cycle the vnode in the nrename path and a
  hammer2_cluster_delete() needed the DELETE_PERMANENT flag to handle the
  case where the vnode was already detached.

* Fix an inode reference count leak, callers of hammer2_inode_common_parent()
  were not properly dropping the returned inode.

* Fix a deadlock due to front-end vs write-thread interactions.  nvtruncbuf()
  calls must not be made with an inode lock held.

* Cleanup some debugging, add some debugging.

9 years agohammer - Fix max volumes check on mount time
Antonio Huete Jimenez [Wed, 30 Jul 2014 19:01:43 +0000 (21:01 +0200)]
hammer - Fix max volumes check on mount time

9 years agoshare/examples - Fix cdev warnings
Antonio Huete Jimenez [Tue, 8 Jul 2014 17:27:56 +0000 (19:27 +0200)]
share/examples - Fix cdev warnings

9 years agohammer2 - major simplification of algorithms part 1/many
Matthew Dillon [Wed, 30 Jul 2014 07:17:29 +0000 (00:17 -0700)]
hammer2 - major simplification of algorithms part 1/many

* Huge simplification of in-memory data structures and algorithms.
  Remove delete-duplicate, ownerq (shadow copies), dbq, dbtree, and most of
  the xid lo/hi sequencing.  Remove all the complexities related to
  managing the above elements.  Net removal of ~1500 lines of code or so.

* Blockmap deletions are now handled by the frontend, so the backend doesn't
  need to deal with shadowed deletions.  This is still fairly optimal since
  insertions are still handled by the backend during flushes.  So for quick
  create/delete operations the blockmap is never even initialized which means
  that deletions don't have to remove anything.

* Cleanup buffer cache on file removal / last-close, but allow file delete
  to simply wipe out the inode.  Don't bother iterating its indirect blocks
  or data blocks on-media but use the flush code to get rid of any chains
  still cached.

* Buffer invalidation on permanent chain deletions for modified chains.

* Major items still TODO: flush interlocks and meta-data updates.

9 years ago"Normalize" some types, s/long unsigned/unsigned long/ etc.
Sascha Wildner [Tue, 29 Jul 2014 20:45:27 +0000 (22:45 +0200)]
"Normalize" some types, s/long unsigned/unsigned long/ etc.

Just like the rest of our tree is doing it.

9 years agokernel: Completely remove the obsolete DEVICE_POLLING and SMP options.
Sascha Wildner [Tue, 29 Jul 2014 19:55:02 +0000 (21:55 +0200)]
kernel: Completely remove the obsolete DEVICE_POLLING and SMP options.

DEVICE_POLLING is IFPOLL_ENABLE and SMP is the default for some time
now.

9 years agokernel: Remove unused and unbuilt code from the userland sysvipc GSoC.
Sascha Wildner [Tue, 29 Jul 2014 19:45:17 +0000 (21:45 +0200)]
kernel: Remove unused and unbuilt code from the userland sysvipc GSoC.

In-discussion-with: profmakx

9 years agokernel: Make sysvipc syscalls non-optional.
Sascha Wildner [Tue, 29 Jul 2014 19:36:23 +0000 (21:36 +0200)]
kernel: Make sysvipc syscalls non-optional.

Before this commit, we had three related kernel options, SYSVMSG,
SYSVSEM and SYSVSHM, to enable the syscalls. They were in all our
configs, but in theory the user could disable the functionality.
Having to deal with scenarios where they are not available is
unnecessarily complicated and there seems to be no real reason to
want to disable them.

For convenience, leave the three options as no-ops for now, so
adjusting the kernel config is not necessarily needed. We'll
change them to being unknown at some later point.

This commit also removes some parts which assumed that we had
sysvmsg.ko, sysvsem.ko and sysvshm.ko modules, like FreeBSD, but
this assumption was never true on DragonFly.

9 years agousb4bsd: set D_MPSAFE for usb devices (static)
Markus Pfeiffer [Tue, 29 Jul 2014 18:52:40 +0000 (18:52 +0000)]
usb4bsd: set D_MPSAFE for usb devices (static)

9 years agousb4bsd: set D_MPSAFE for usb devices
Markus Pfeiffer [Tue, 29 Jul 2014 18:12:13 +0000 (18:12 +0000)]
usb4bsd: set D_MPSAFE for usb devices

9 years agokernel/netisr: Use __func__ in kprintfs.
Nuno Antunes [Sun, 27 Jul 2014 06:39:07 +0000 (07:39 +0100)]
kernel/netisr: Use __func__ in kprintfs.

9 years agoSync ACPICA with Intel's version 20140724.
Sascha Wildner [Sat, 26 Jul 2014 09:37:51 +0000 (11:37 +0200)]
Sync ACPICA with Intel's version 20140724.

* ACPI 5.1 is fully supported in ACPICA as of this release.

* Better handling of GPEs with no associated handler or control message.

* Timer() support in the AML Debug object.

* New -u option in acpihelp(8).

* Bug fixes & other enhancements.

For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.

9 years agoacpica: Exclude nsdumpdv.c, it's obsolete & its code is #ifdef'd out.
Sascha Wildner [Sat, 26 Jul 2014 07:53:01 +0000 (09:53 +0200)]
acpica: Exclude nsdumpdv.c, it's obsolete & its code is #ifdef'd out.

9 years agodrm/i915: Sync intel_ringbuffer.c with Linux 3.8.13
François Tigeot [Fri, 25 Jul 2014 06:18:59 +0000 (08:18 +0200)]
drm/i915: Sync intel_ringbuffer.c with Linux 3.8.13

* Preallocate next seqno before touching the ring

* Rearrange code to only have a single method for waiting upon the ring

* Don't allow ring tail to reach the same cacheline as head

* Implement workaround for broken CS tlb on i830/845

9 years agodrm/i915: Reduce differences with Linux 3.8.13
François Tigeot [Fri, 25 Jul 2014 06:15:23 +0000 (08:15 +0200)]
drm/i915: Reduce differences with Linux 3.8.13

Mostly in GEM code

9 years agocsprng - Add copyright & comment around sleep code
Alex Hornung [Fri, 25 Jul 2014 06:05:05 +0000 (07:05 +0100)]
csprng - Add copyright & comment around sleep code

9 years agocsprng - fix unused variable
Alex Hornung [Thu, 24 Jul 2014 20:57:39 +0000 (21:57 +0100)]
csprng - fix unused variable

9 years agocsprng - don't wait for entropy for the ratectl'ed reseed
Alex Hornung [Thu, 24 Jul 2014 20:53:33 +0000 (21:53 +0100)]
csprng - don't wait for entropy for the ratectl'ed reseed

9 years agokernel/rum: Fix TX rate control. Use usb_pause_ls instead of zsleep.
Imre Vadasz [Thu, 24 Jul 2014 18:19:39 +0000 (20:19 +0200)]
kernel/rum: Fix TX rate control. Use usb_pause_ls instead of zsleep.

* Fix TX rate control by interpreting the TX statistic counters correctly.
  Taken-From: OpenBSD

* Using usb_pause_ls instead of zsleep seems to avoid deadlocks.

9 years agokernel - Fix jumbo cluster buffer deadlock
Matthew Dillon [Thu, 24 Jul 2014 18:56:16 +0000 (11:56 -0700)]
kernel - Fix jumbo cluster buffer deadlock

* mbufjcluster_cache and mbufphdr_jcluster_cache did not have
  a nominal maintainance number set, which causes objcache to
  default to (cluster_limit / 2).  Both of these caches are fed
  from mjclmeta_cache.  The default maintainance value combined
  for these two allows mjclmeta_cache to become completely exhausted.

  The exhaustion results in an edge case when combined with the per-cpu
  caches which can deadlock the mjclmeta_cache.  The other mbuf caches
  do not have this problem because they specify maintainance divisors
  of at least 4.

* Implement kern.ipc.mjclph_cachefrac and kern.ipc.mjcl_cachefrac to
  force the two jcluster caches to return more buffers to mjclmeta_cache.
  Default to 4 and 16.

* Force all cachefrac values for all mbuf caches to not be less than 3
  to prevent sysop foot-shooting.

* Also set a fixed cachefrac of 4 for mbuf_cache, mclmeta_cache, and
  mjclmeta_cache.  The default in objcache of 2 (aka 1/2) is overkill.
  (this change is subject to review from Sephe).

Reported-by: joris
9 years agocsprng - If not enough entropy is available, sleep
Alex Hornung [Thu, 24 Jul 2014 19:41:03 +0000 (20:41 +0100)]
csprng - If not enough entropy is available, sleep

 * If no reseed has happened yet, or if we were unsuccessful in
   reseeding the prng, sleep and try again whenever a reseed
   occurred or entropy has been added to the pools.

Reported-by: YONETANI