aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-02-15Improve sparse documentationMatthew Wilcox1-0/+6
Add documentation of -DCONFIG_SPARSE_RCU_POINTER. I started to add documentation of -D__CHECK_ENDIAN__ as well, but discovered I'm too late; that's now enabled by default. Signed-off-by: Matthew Wilcox <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-12Documentation: make Makefile.sphinx no-ops quieterJim Davis1-0/+4
Silence the "make[1]: Nothing to be done for ..." messages for the no-op targets in Makefile.sphinx. Signed-off-by: Jim Davis <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-12Documentation: DMA-ISA-LPC.txtNathan Howard1-1/+1
Fixed spelling issue. Signed-off-by: Nathan Howard <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-12Documentation: input: fix path to input code definitionsMartin Kepplinger1-2/+2
The UAPI header split failed to update the documentation for the input event codes; fix things accordingly. Signed-off-by: Martin Kepplinger <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06docs: Remove the copyright year from conf.pyJonathan Corbet1-1/+1
It had gone stale, of course, as it would every year, a single date doesn't really cover things, and the date isn't really needed anyway.
2017-02-06docs: Fix a warning in the Korean HOWTO.rst translationJonathan Corbet1-2/+2
An extra space in the wrong place made Sphinx unhappy; take it out. Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06PM / sleep / docs: Convert PM notifiers document to reSTRafael J. Wysocki7-60/+75
Move the document describing PM notifiers (used during system sleep state transitions) to Documentation/driver-api/pm/, convert it to reST and update it to use current terminology. Also replace the remaining references to the old version of it in .txt documents with references to the new one. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06PM / core / docs: Convert sleep states API document to reSTRafael J. Wysocki6-343/+387
Move the document describing the system sleep state transitions API for devices to Documentation/driver-api/pm/, convert it to reST and update it to use current terminology. Also remove the remaining reference to the old version of it from pm.h. The new document still contains references to some documents in the .txt format that will be converted later. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06PM / core: Update kerneldoc comments in pm.hRafael J. Wysocki1-56/+57
Refresh the struct dev_pm_ops kerneldoc comment, so that it looks better and is more readable after processing by Sphinx, and drop the kerneldoc marker from a few other comments ("PM_EVENT_ messages" and a couple of enum types declarations) which are not proper kerneldoc and generally confuse Sphinx. Also change the comment describing struct dev_pm_domain into a kerneldoc one. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06Merge branch 'ben' into docs-nextJonathan Corbet2-9/+9
Ben writes: "This series fixes some bugs I found in the new doc build system."
2017-02-06doc-rst: Fix recursive make invocation from macrosBen Hutchings1-4/+4
In any case where we recurse but don't mention $(MAKE) literally in the recipe, we need to add a '+' at the start of the command to ensure that parallel makes and various other options work properly. Fixes: 609afe6b49ef ("Documentation/sphinx: build the media intermediate ...") Tested-by: Markus Heiser <[email protected]> Signed-off-by: Ben Hutchings <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06doc-rst: Delete output of failed dot-SVG conversionBen Hutchings1-1/+1
As we use redirection to create the SVG file, even a failed conversion will create the file and 'make' will consider it up-to-date if the build is retried. We should delete it in case of failure. Fixes: ec868e4ee2bc ("docs-rst: media: build SVG from graphviz files") Signed-off-by: Ben Hutchings <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-06doc-rst: Break shell command sequences on failureBen Hutchings1-4/+4
As $(SHELL) doesn't include the -e option, any loop or other sequence needs to include explicit checks for failing commands. Fixes: 609afe6b49ef ("Documentation/sphinx: build the media intermediate ...") Fixes: 606b9ac81a63 ("doc-rst: generic way to build only sphinx sub-folders") Fixes: cd21379b1698 ("doc-rst: generic way to build PDF of sub-folders") Tested-by: Markus Heiser <[email protected]> Signed-off-by: Ben Hutchings <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-01Documentation/sphinx: make targets independent of Sphinx work for HAVE_SPHINX=0Jani Nikula1-2/+5
Make targets that don't depend on Sphinx work without warnings about missing Sphinx. 'make cleandocs' will work without Sphinx just fine, and the targets that are no-ops for Sphinx should just be skipped. Move them outside of the HAVE_SPHINX checks to take precedence over the .DEFAULT target for HAVE_SPHINX=0. Reported-by: Jim Davis <[email protected]> Reference: http://lkml.kernel.org/r/CA+r1ZhjRVqkjPXGOGB_BOAX2Hkfb+qQCtTzFfBMFeH1Mfeej7w@mail.gmail.com Signed-off-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-01doc-rst: fixed cleandoc target when used with O=dirMarkus Heiser1-1/+1
The cleandocs target won't work if I use a different output folder:: $ make O=/tmp/kernel SPHINXDIRS="process" cleandocs make[1]: Entering directory '/tmp/kernel' make[3]: *** No rule to make target 'clean'. Stop. ... Documentation/Makefile.sphinx:100: recipe for target 'cleandocs' failed Signed-off-by: Markus Heiser <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-02-01Documentation/sphinx: prevent generation of .pyc files in the source treeJani Nikula1-0/+1
Use PYTHONDONTWRITEBYTECODE=1 to prevent python from creating .pyc files in the source tree. Python 3.2 has a __pycache__ scheme [1], but before that the only alternative seems to be to copy the source files to the build tree to ensure the .pyc files are created there too. Just prevent .pyc file generation for simplicity. Considering the small amount of python code to compile (assuming sphinx itself has .pyc around), the impact on build is neglible. [1] http://stackoverflow.com/questions/3522079/changing-the-directory-where-pyc-files-are-created References: http://lkml.kernel.org/r/CAMuHMdVxqpH7-9XJ+YE_pgoA+-fe0969cSkOehYh3uubYcrhZA@mail.gmail.com Reported-by: Geert Uytterhoeven <[email protected]> References: http://lkml.kernel.org/r/[email protected] Reported-by: Ben Hutchings <[email protected]> Cc: Jonathan Corbet <[email protected]> Signed-off-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-31docs: Convert the regulator docbook to RSTJonathan Corbet3-304/+171
A fairly straightforward conversion to RST; the document is then added to the driver-api manual. Of course, this document has seen no substantive changes since 2008, so chances are it needs work in other areas as well. Cc: Mark Brown <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-31docs: Convert the deviceio template to RSTJonathan Corbet3-323/+202
Convert deviceiobook.tmpl to RST and incorporate it into the driver API manual. Like the rest of our documentation, this one could use some work. There's no mention of ioremap() and friends, no mention of io_read*() and friends. But we have nice documentation for all those folks writing new drivers that do port I/O :). The :c:func: notation has been left off of all the read*/write* functions. There's no kerneldoc comments for them anyway, so those links will never be live, and writing a bunch of repetitive "read a byte from I/O memory" comments lacks appeal. Cc: Matthew Wilcox <[email protected]> Cc: Alan Cox <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26docs/zh_CN: Add coding-style into docs build systemAndy Deng3-1/+21
Tested by the command: make htmldocs During the compiling process, zh_CN/coding-style.rst has no errors and warnings generated, the generated html document has been checked. Signed-off-by: Andy Deng <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26zh_CN/CodingStyle: Convert to ReST markupAndy Deng1-326/+462
This commit applies all changes from the English version, and should be able to work with the documentation build system. Signed-off-by: Andy Deng <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26zh_CN/CodingStyle: improve translationAndy Deng1-30/+31
Some of the sentences in Chapters 19 and 20 are re-translated: - Fixed translation errors in Section 2 of Chapter 19 to prevent misleading readers; - Retranslate some sentences to make the translation more clear and accurate. Signed-off-by: Andy Deng <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26Doc: Fix double words in DocumentationMasanari Iida6-6/+6
This patch fix some double words found in Documentation. Signed-off-by: Masanari Iida <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26kernel-doc: Handle returning pointers to pointersMatthew Wilcox1-7/+7
Clearly nobody ever tried to build the documentation for the radix tree before: include/linux/radix-tree.h:400: warning: cannot understand function prototype: 'void ** radix_tree_iter_init(struct radix_tree_iter *iter, unsigned long start) ' Indeed, the regexes only handled a single '*', not one-or-more. I have tried to fix that, but now I have perl regexes all over my hands, and I fear I shall never be clean again. Signed-off-by: Matthew Wilcox <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26dynamic-debug-howto: Correct echo -c to -nSteven Price1-2/+2
Two of the example command lines use an argument to echo of "-c" which isn't valid in (most versions of) echo causing these examples to fail. Correct the argument to "-n" which works correctly. Signed-off-by: Steven Price <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-26Documentation: dontdiff: Update with additional entriesFlorian Fainelli1-2/+5
Add a bunch of entries reflective of programs that the kernel build: sortextable, dtc. And while at it, expand the lex*.c entries to cover e.g: dtc-lexer.c. Finally, exclude devicetable-offsets.h Signed-off-by: Florian Fainelli <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-13Documentation: cpuset: Fix 'cpuset.tasks' -> 'tasks'W. Trevor King1-1/+1
This looks like it was accidentally caught up in e21a05cb (doc: cpuset: Update the cpuset flag file, 2010-02-24). While I'm touching the line, also fix the posessive "cpusets" -> "cpuset's". Signed-off-by: W. Trevor King <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-13Doc: clarify that GPL is GPL v2, not v2+Sanjeev1-2/+2
... and a minor missing period at EOL Signed-off-by: Sanjeev Gupta <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-13kernel-doc: properly document array arguments of functionGabriel Krisman Bertazi1-1/+1
Documentation for array parameters passed in a function, like the first argument in the function below, weren't getting exported in the rst format, although they work fine for html and pdf formats: void drm_clflush_pages(struct page * pages[], unsigned long num_pages) That's because the string key to store the description in the parameterdescs dictionary doesn't have the [] suffix. This cleans up the suffix from the key before accessing the dictionary. Signed-off-by: Gabriel Krisman Bertazi <[email protected]> Fixes: c0d1b6ee780a ("kernel-doc: produce RestructuredText output") Reviewed-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-13Documentation: Update CPU hotplug and move it to core-apiSebastian Andrzej Siewior3-452/+373
The current CPU hotplug is outdated. During the update to what we currently have I rewrote it partly and moved to sphinx format. Cc: Jonathan Corbet <[email protected]> Cc: Mauro Carvalho Chehab <[email protected]> Cc: Rusty Russell <[email protected]> Cc: Srivatsa Vaddagiri <[email protected]> Cc: Ashok Raj <[email protected]> Cc: Joel Schopp <[email protected]> Cc: [email protected] Signed-off-by: Sebastian Andrzej Siewior <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04kernel-doc: make highlights more homogenous for the various backendsPaolo Bonzini1-18/+50
$type_struct_full and friends are only used by the restructuredText backend, because it needs to separate enum/struct/typedef/union from the name of the type. However, $type_struct is *also* used by the rST backend. This is confusing. This patch replaces $type_struct's use in the rST backend with a new $type_fallback; it modifies $type_struct so that it can be used in the rST backend; and creates regular expressions like $type_struct for enum/typedef/union, for use in all backends. Note that, compared to $type_*_full, in the new regexes $1 includes both the "kind" and the name (before, $1 was pretty much a constant). Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04kernel-doc: make member highlighting available in all backendsPaolo Bonzini1-11/+19
Note that, in order to produce the correct Docbook markup, the "." or "->" must be separated from the member name in the regex's captured fields. For consistency, this change is applied to $type_member and $type_member_func too, not just to $type_member_xml. List mode only prints the struct name, to avoid any undesired change in the operation of docproc. Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04kernel-doc: include parameter type in docbook outputPaolo Bonzini1-2/+4
The restructuredText output includes both the parameter type and the name for functions and function-typed members. Do the same for docbook. Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04kernel-doc: strip attributes even if they have an argumentPaolo Bonzini1-1/+7
An inline function can have an attribute, as in include/linux/log2.h, and kernel-doc handles this already for simple cases. However, some attributes have arguments (e.g. the "target" attribute). Handle those too. Furthermore, attributes could be at the beginning of a function declaration, before the return type. To correctly handle this case, you need to strip spaces after the attributes; otherwise, dump_function is left confused. Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04kernel-doc: cleanup parameter type in function-typed argumentsPaolo Bonzini1-0/+1
A prototype like /** * foo - sample definition * @bar: a parameter */ int foo(int (*bar)(int x, int y)); is currently producing .. c:function:: int foo (int (*bar) (int x, int y) sample definition **Parameters** ``int (*)(int x, int y) bar`` a parameter Collapse the spaces so that the output is nicer. Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Jani Nikula <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04Doc: clarify source of jitter in USB1.1, and USB2.0Sanjeev1-2/+5
Even though the jitter due to USB1.1 may be 1ms, NTP can reduce its effect significantly. And USB2.0 reduces this anyway. Signed-off-by: Sanjeev Gupta <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04Doc: Typos in documentationSanjeev1-2/+2
No semantic changes. The next patch in this series will do the actual changes to sync with NTP current best practices Signed-off-by: Sanjeev Gupta <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04Doc: Correct PPS doc to reflect code locationSanjeev1-3/+4
timepps.h , as well as PPS sample test utilities, are no longer in the kernel tree. Update documentation to point to new locations. Signed-off-by: Sanjeev Gupta <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04Documentation: fix spelling mistakes of "Celcius" -- > "Celsius"Colin Ian King2-5/+5
Signed-off-by: Colin Ian King <[email protected]> Acked-by: Guenter Roeck <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04Note that the POWER[89] processors are supported.Shilpasri G Bhat1-1/+3
Documentation: cpufreq: Update supported powernv processors Signed-off-by: Shilpasri G Bhat <[email protected]> Acked-by: Viresh Kumar <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2017-01-04docs: IIO documentation sphinx conversionJonathan Cameron9-698/+508
This is a manual conversion of the existing DocBook documentation for IIO. The intent is not to substantially change any of the content in this patch, but to give a base to build upon. Signed-off-by: Jonathan Cameron <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2016-12-27Documentation/unaligned-memory-access.txt: fix incorrect comparison operatorCihangir Akturk1-1/+1
In the actual implementation ether_addr_equal function tests for equality to 0 when returning. It seems in commit 0d74c4 it is somehow overlooked to change this operator to reflect the actual function. Signed-off-by: Cihangir Akturk <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2016-12-27docs: Fix build failureJohn Brooks1-1/+1
The 80211.tmpl DocBook file was removed in commit 819bf593767c ("docs-rst: sphinxify 802.11 documentation"), but the 80211.xml target was re-added to the Makefile by commit 7ddedebb03b7 ("ALSA: doc: ReSTize writing-an-alsa-driver document"), leading to a failure when building the documentation: *** No rule to make target 'Documentation/DocBook/80211.xml', needed by 'Documentation/DocBook/80211.aux.xml'. cc: [email protected] Signed-off-by: John Brooks <[email protected]> Mea-culpa-by: Jonathan Corbet <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]>
2016-12-27Merge tag 'v4.10-rc1' into docs-nextJonathan Corbet11424-224736/+700098
Linux 4.10-rc1
2016-12-25Linux 4.10-rc1Linus Torvalds1-2/+2
2016-12-25powerpc: Fix build warning on 32-bit PPCLarry Finger1-1/+1
I am getting the following warning when I build kernel 4.9-git on my PowerBook G4 with a 32-bit PPC processor: AS arch/powerpc/kernel/misc_32.o arch/powerpc/kernel/misc_32.S:299:7: warning: "CONFIG_FSL_BOOKE" is not defined [-Wundef] This problem is evident after commit 989cea5c14be ("kbuild: prevent lib-ksyms.o rebuilds"); however, this change in kbuild only exposes an error that has been in the code since 2005 when this source file was created. That was with commit 9994a33865f4 ("powerpc: Introduce entry_{32,64}.S, misc_{32,64}.S, systbl.S"). The offending line does not make a lot of sense. This error does not seem to cause any errors in the executable, thus I am not recommending that it be applied to any stable versions. Thanks to Nicholas Piggin for suggesting this solution. Fixes: 9994a33865f4 ("powerpc: Introduce entry_{32,64}.S, misc_{32,64}.S, systbl.S") Signed-off-by: Larry Finger <[email protected]> Cc: Nicholas Piggin <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: [email protected] Signed-off-by: Linus Torvalds <[email protected]>
2016-12-25avoid spurious "may be used uninitialized" warningLinus Torvalds1-0/+1
The timer type simplifications caused a new gcc warning: drivers/base/power/domain.c: In function ‘genpd_runtime_suspend’: drivers/base/power/domain.c:562:14: warning: ‘time_start’ may be used uninitialized in this function [-Wmaybe-uninitialized] elapsed_ns = ktime_to_ns(ktime_sub(ktime_get(), time_start)); despite the actual use of "time_start" not having changed in any way. It appears that simply changing the type of ktime_t from a union to a plain scalar type made gcc check the use. The variable wasn't actually used uninitialized, but gcc apparently failed to notice that the conditional around the use was exactly the same as the conditional around the initialization of that variable. Add an unnecessary initialization just to shut up the compiler. Signed-off-by: Linus Torvalds <[email protected]>
2016-12-25Merge branch 'timers-urgent-for-linus' of ↵Linus Torvalds227-665/+604
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull timer type cleanups from Thomas Gleixner: "This series does a tree wide cleanup of types related to timers/timekeeping. - Get rid of cycles_t and use a plain u64. The type is not really helpful and caused more confusion than clarity - Get rid of the ktime union. The union has become useless as we use the scalar nanoseconds storage unconditionally now. The 32bit timespec alike storage got removed due to the Y2038 limitations some time ago. That leaves the odd union access around for no reason. Clean it up. Both changes have been done with coccinelle and a small amount of manual mopping up" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: ktime: Get rid of ktime_equal() ktime: Cleanup ktime_set() usage ktime: Get rid of the union clocksource: Use a plain u64 instead of cycle_t
2016-12-25Merge branch 'smp-urgent-for-linus' of ↵Linus Torvalds72-689/+308
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull SMP hotplug notifier removal from Thomas Gleixner: "This is the final cleanup of the hotplug notifier infrastructure. The series has been reintgrated in the last two days because there came a new driver using the old infrastructure via the SCSI tree. Summary: - convert the last leftover drivers utilizing notifiers - fixup for a completely broken hotplug user - prevent setup of already used states - removal of the notifiers - treewide cleanup of hotplug state names - consolidation of state space There is a sphinx based documentation pending, but that needs review from the documentation folks" * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/armada-xp: Consolidate hotplug state space irqchip/gic: Consolidate hotplug state space coresight/etm3/4x: Consolidate hotplug state space cpu/hotplug: Cleanup state names cpu/hotplug: Remove obsolete cpu hotplug register/unregister functions staging/lustre/libcfs: Convert to hotplug state machine scsi/bnx2i: Convert to hotplug state machine scsi/bnx2fc: Convert to hotplug state machine cpu/hotplug: Prevent overwriting of callbacks x86/msr: Remove bogus cleanup from the error path bus: arm-ccn: Prevent hotplug callback leak perf/x86/intel/cstate: Prevent hotplug callback leak ARM/imx/mmcd: Fix broken cpu hotplug handling scsi: qedi: Convert to hotplug state machine
2016-12-25Merge branch 'turbostat' of ↵Linus Torvalds3-371/+673
git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux Pull turbostat updates from Len Brown. * 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: tools/power turbostat: remove obsolete -M, -m, -C, -c options tools/power turbostat: Make extensible via the --add parameter tools/power turbostat: Denverton uses a 25 MHz crystal, not 19.2 MHz tools/power turbostat: line up headers when -M is used tools/power turbostat: fix SKX PKG_CSTATE_LIMIT decoding tools/power turbostat: Support Knights Mill (KNM) tools/power turbostat: Display HWP OOB status tools/power turbostat: fix Denverton BCLK tools/power turbostat: use intel-family.h model strings tools/power/turbostat: Add Denverton RAPL support tools/power/turbostat: Add Denverton support tools/power/turbostat: split core MSR support into status + limit tools/power turbostat: fix error case overflow read of slm_freq_table[] tools/power turbostat: Allocate correct amount of fd and irq entries tools/power turbostat: switch to tab delimited output tools/power turbostat: Gracefully handle ACPI S3 tools/power turbostat: tidy up output on Joule counter overflow
2016-12-25mm: add PageWaiters indicating tasks are waiting for a page bitNicholas Piggin9-50/+174
Add a new page flag, PageWaiters, to indicate the page waitqueue has tasks waiting. This can be tested rather than testing waitqueue_active which requires another cacheline load. This bit is always set when the page has tasks on page_waitqueue(page), and is set and cleared under the waitqueue lock. It may be set when there are no tasks on the waitqueue, which will cause a harmless extra wakeup check that will clears the bit. The generic bit-waitqueue infrastructure is no longer used for pages. Instead, waitqueues are used directly with a custom key type. The generic code was not flexible enough to have PageWaiters manipulation under the waitqueue lock (which simplifies concurrency). This improves the performance of page lock intensive microbenchmarks by 2-3%. Putting two bits in the same word opens the opportunity to remove the memory barrier between clearing the lock bit and testing the waiters bit, after some work on the arch primitives (e.g., ensuring memory operand widths match and cover both bits). Signed-off-by: Nicholas Piggin <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Bob Peterson <[email protected]> Cc: Steven Whitehouse <[email protected]> Cc: Andrew Lutomirski <[email protected]> Cc: Andreas Gruenbacher <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Mel Gorman <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>