diff --git a/Documentation/Makefile b/Documentation/Makefile
index e889e7cb8511..64c56e698697 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -41,7 +41,7 @@ PAPEROPT_a4     = -D latex_paper_size=a4
 PAPEROPT_letter = -D latex_paper_size=letter
 KERNELDOC       = $(srctree)/scripts/kernel-doc
 KERNELDOC_CONF  = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
-ALLSPHINXOPTS   =  $(KERNELDOC_CONF) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
+ALLSPHINXOPTS   = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
 # the i18n builder cannot share the environment and doctrees with the others
 I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
 
@@ -72,6 +72,9 @@ quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
 htmldocs:
 	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
 
+mandocs:
+	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,kernel-doc-man,$(var),man,$(var)))
+
 linkcheckdocs:
 	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
 
diff --git a/Documentation/conf.py b/Documentation/conf.py
index 72647a38b5c2..0b049b0dff4b 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -34,13 +34,16 @@ needs_sphinx = '1.3'
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include', 'cdomain', 'kfigure', 'sphinx.ext.ifconfig']
-
-# The name of the math extension changed on Sphinx 1.4
-if major == 1 and minor > 3:
-    extensions.append("sphinx.ext.imgmath")
-else:
-    extensions.append("sphinx.ext.pngmath")
+extensions = [
+    'linuxdoc.rstFlatTable'      # flat-table reST directive
+    , 'linuxdoc.rstKernelDoc'    # kernel-doc reST directive
+    , 'linuxdoc.manKernelDoc'    # kernel-doc-man sphinx builder
+    , 'linuxdoc.cdomain'         # Replacement for the sphinx c-domain
+    , 'linuxdoc.kfigure'         # Sphinx extension which implements scalable image handling
+    , 'linuxdoc.kernel_include'
+    , 'sphinx.ext.todo'
+    , 'sphinx.ext.imgmath'
+]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -132,7 +135,7 @@ pygments_style = 'sphinx'
 #keep_warnings = False
 
 # If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = False
+todo_include_todos = True
 
 primary_domain = 'c'
 highlight_language = 'none'
@@ -434,10 +437,7 @@ latex_documents = [
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
-man_pages = [
-    (master_doc, 'thelinuxkernel', 'The Linux Kernel Documentation',
-     [author], 1)
-]
+man_pages = []
 
 # If true, show URL addresses after external links.
 #man_show_urls = False
@@ -551,11 +551,66 @@ pdf_documents = [
     ('kernel-documentation', u'Kernel', u'Kernel', u'J. Random Bozo'),
 ]
 
-# kernel-doc extension configuration for running Sphinx directly (e.g. by Read
-# the Docs). In a normal build, these are supplied from the Makefile via command
-# line arguments.
-kerneldoc_bin = '../scripts/kernel-doc'
-kerneldoc_srctree = '..'
+# ------------------------------------------------------------------------------
+# Options of the kernel-doc parser
+# ------------------------------------------------------------------------------
+
+# Set parser's default value for kernel-doc directive option  ``:exp-method:``
+# default: kernel_doc_exp_method = 'macro'
+
+# Set parser's default value for kernel-doc directive option ``:exp-ids:``.
+# default: kernel_doc_exp_ids = \
+#    ['EXPORT_SYMBOL', 'EXPORT_SYMBOL_GPL', 'EXPORT_SYMBOL_GPL_FUTURE']
+
+# Set parser's default value for kernel-doc directive option  ``:known-attrs:``
+# default: kernel_doc_known_attrs = [...]
+
+# Global fallback for man section of kernel-doc directives.  Set this value if
+# you want to create man pages for those kernel-doc directives, which has not
+# been set a ``:man-sect:`` value.  The default is ``None``, which means; do the
+# opposite and create only man pages for those directives which has been set the
+# ``:man-sect:`` option.
+# default: kernel_doc_mansect = None
+kernel_doc_mansect = 9
+
+# Set parser's default kernel-doc mode ``[reST|kernel-doc]``.  Normally you wont
+# set anything other than the default!
+# default: kernel_doc_mode = 'reST'
+
+# If true, more warnings will be logged.  E.g. a missing description of a
+# function's return value will be logged.
+# default: kernel_doc_verbose_warn = True
+kernel_doc_verbose_warn = False
+
+# If ``True`` fatal errors (like missing function descriptions) raise an error.
+# The default is ``True``. This means that the build process break every time a
+# serve error in the documentation build occur.  Often it might be better the
+# build continues and inserts Oops on serve errors.  For this, set
+# ``kernel_doc_raise_error`` to ``False``.
+# default kernel_doc_raise_error = True
+kernel_doc_raise_error = False
+
+# Oops messages are Sphinx ``.. todo::`` directives.  To insert the Oops
+# messages from the kernel-doc parser we have to active todo_include_todos also.
+todo_include_todos = True
+
+# In nickpick mode, it will complain about lots of missing references that
+#
+# 1) are just typedefs like: bool, __u32, etc;
+# 2) It will complain for things like: enum, NULL;
+# 3) It will complain for symbols that should be on different
+#    books (but currently aren't ported to ReST)
+#
+# The list below has a list of such symbols to be ignored in nitpick mode
+#
+nitpick_ignore = [
+    ("c:type", "bool"),
+    ("c:type", "enum"),
+    ("c:type", "u16"),
+    ("c:type", "u32"),
+    ("c:type", "u64"),
+    ("c:type", "u8"),
+    ]
 
 # ------------------------------------------------------------------------------
 # Since loadConfig overwrites settings from the global namespace, it has to be
diff --git a/Documentation/media/Makefile b/Documentation/media/Makefile
index d75d70f191bc..ee28d6fee1bb 100644
--- a/Documentation/media/Makefile
+++ b/Documentation/media/Makefile
@@ -57,6 +57,7 @@ $(BUILDDIR)/lirc.h.rst: ${UAPI}/lirc.h ${PARSER} $(SRC_DIR)/lirc.h.rst.exception
 
 all: $(IMGDOT) $(BUILDDIR) ${TARGETS}
 html: all
+kernel-doc-man: all
 epub: all
 xml: all
 latex: $(IMGPDF) all
diff --git a/Makefile b/Makefile
index a45f84a7e811..8e015889fb9b 100644
--- a/Makefile
+++ b/Makefile
@@ -1543,6 +1543,7 @@ $(help-board-dirs): help-%:
 # Documentation targets
 # ---------------------------------------------------------------------------
 DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \
+	       mandocs \
 	       linkcheckdocs dochelp refcheckdocs
 PHONY += $(DOC_TARGETS)
 $(DOC_TARGETS): scripts_basic FORCE
