diff --git a/manifests/kernel_option.pp b/manifests/kernel_option.pp
index 6bb146402c8298a76045e13d2fd0e9570cf173ed..f2ba642c927b852b516df7d1d18a14dbdc292b4b 100644
--- a/manifests/kernel_option.pp
+++ b/manifests/kernel_option.pp
@@ -1,12 +1,13 @@
-# Copyright © 2017   Thomas Bellman, Linköping, Sweden
+# Copyright © 2017-2018   Thomas Bellman, Linköping, Sweden
 # Licensed under the GNU LGPL v3+; see the README file for more information.
 
 
 /*
  * Set or remove a kernel commandline option.
  *
- * Which bootloader is in use will be guessed.  The heuristics for that
- * are not very good.
+ * Depending on the details of the bootloader, the option might be set/unset
+ * for all kernels, or just for all Linux kernels.  There is currently no
+ * way to control this.
  *
  * Parameters:
  *  - name	Kernel commandline option to set or remove.
@@ -20,12 +21,21 @@
  *		like "console=ttyS0".
  *		Since only ensure => absent is implemented, the value
  *		parameter is currently ignored.
+ *
+ *  - provider	The bootloader in use.  Supported values are 'grub0' and
+ *		'grub2'.  If not specified, the bootloader will be guessed
+ *		based on the operating system.
+ *		The grub2 provider currently only supports removing options.
  */
-define bootloader::kernel_option($ensure='present', $value=undef)
+define bootloader::kernel_option(
+	$ensure='present', $value=undef, $provider=undef)
 {
-    include bootloader::guess
-
-    $bootloader = $bootloader::guess::bootloader
+    if ($provider) {
+	$bootloader = $provider
+    } else {
+	include bootloader::guess
+	$bootloader = $bootloader::guess::bootloader
+    }
     case $bootloader
     {
 	'grub0': {