The patch titled Subject: printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus-fix has been removed from the -mm tree. Its filename was printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus-fix.patch This patch was dropped because it was folded into printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus.patch ------------------------------------------------------ From: Petr Mládek <pmladek@xxxxxxx> Subject: printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus-fix There are situations when the default value is not defined, for example, when both SMP and BASE_SMALL are set. I would ignore SMP. It is handled in the code. If SMP is not defined, num_possible_cpus() returns 1 and "cpu_extra" is always 0. Then we could have: range 0 21 default 12 if !BASE_SMALL default 0 if BASE_SMALL What about the following patch? It does the above change. Plus it tries to make the help text better readable. It says the basic details first. Then it says other useful information in separate paragraphs. Also I removed the computation example. It was not easy to parse. Interested people might want to look into sources. Cc: Luis R. Rodriguez <mcgrof@xxxxxxxx> Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- init/Kconfig | 51 ++++++++++++++++++------------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff -puN init/Kconfig~printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus-fix init/Kconfig --- a/init/Kconfig~printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus-fix +++ a/init/Kconfig @@ -813,47 +813,34 @@ config LOG_BUF_SHIFT by "log_buf_len" boot parameter. Examples: - 17 => 128 KB + 17 => 128 KB 16 => 64 KB - 15 => 32 KB - 14 => 16 KB + 15 => 32 KB + 14 => 16 KB 13 => 8 KB 12 => 4 KB config LOG_CPU_MAX_BUF_SHIFT int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" range 0 21 - default 12 - depends on SMP - depends on !BASE_SMALL + default 12 if !BASE_SMALL + default 0 if BASE_SMALL help - The kernel ring buffer will get additional data logged onto it - when multiple CPUs are supported. Typically the contributions are - only a few lines when idle however under under load this can vary - and in the worst case it can mean losing logging information. You - can use this to set the maximum expected amount of logging - contribution under load by each CPU in the worst case scenario, as - a power of 2. The total sum amount of contributions made by all CPUs - must be greater than half of the default kernel ring buffer size - ((1 << LOG_BUF_SHIFT / 2 bytes)) in order to trigger an increase upon - bootup. If an increase is required the ring buffer is increased to - the next power of 2 that can fit both the minimum kernel ring buffer - (LOG_BUF_SHIFT) plus the additional worst case CPU contributions. - For example if LOG_BUF_SHIFT is 18 (256 KB) you'd require at laest - 128 KB contributions by other CPUs in order to trigger an increase. - With a LOG_CPU_BUF_SHIFT of 12 (4 KB) you'd require at least anything - over > 64 possible CPUs to trigger an increase. If you had 128 - possible CPUs the new minimum required kernel ring buffer size - would be: + This option allows to increase the default ring buffer size + according to the number of CPUs. The value defines the contribution + of each CPU as a power of 2. The used space is typically only few + lines however it might be much more when problems are reported, + e.g. backtraces. + + The increased size means that a new buffer has to be allocated and + the original static one is unused. It makes sense only on systems + with more CPUs. Therefore this value is used only when the sum of + contributions is greater than the half of the default kernel ring + buffer as defined by LOG_BUF_SHIFT. The default values are set + so that more than 64 CPUs are needed to trigger the allocation. - ((1 << 18) + ((128 - 1) * (1 << 12))) / 1024 = 764 KB - - Since we only allow powers of two for the kernel ring buffer size the - new kernel ring buffer size would be 1024 KB. - - CPU contributions are ignored when "log_buf_len" kernel parameter is - used as it forces an exact (power of two) size of the ring buffer to - an expected value. + Also this option is ignored when "log_buf_len" kernel parameter is + used as it forces an exact (power of two) size of the ring buffer. The number of possible CPUs is used for this computation ignoring hotplugging making the compuation optimal for the the worst case _ Patches currently in -mm which might be from pmladek@xxxxxxx are makefile-tell-gcc-optimizer-to-never-introduce-new-data-races.patch printk-make-dynamic-kernel-ring-buffer-alignment-explicit.patch printk-move-power-of-2-practice-of-ring-buffer-size-to-a-helper.patch printk-make-dynamic-units-clear-for-the-kernel-ring-buffer.patch printk-allow-increasing-the-ring-buffer-depending-on-the-number-of-cpus.patch printk-tweak-do_syslog-to-match-comments.patch printk-rename-default_message_loglevel.patch printk-fix-some-comments.patch printk-use-a-clever-macro.patch printk-miscellaneous-cleanups.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html