From: Ingo Molnar <mingo@kernel.org>
To: Ido Yariv <ido@wizery.com>
Cc: linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Shai Fultheim <shai@scalemp.com>
Subject: Re: [PATCH v2 1/2] vsmp: Fix number of CPUs when vsmp is disabled
Date: Mon, 7 May 2012 15:24:33 +0200 [thread overview]
Message-ID: <20120507132433.GA9808@gmail.com> (raw)
In-Reply-To: <1334561976-13965-1-git-send-email-ido@wizery.com>
* Ido Yariv <ido@wizery.com> wrote:
> From: Shai Fultheim <shai@scalemp.com>
>
> In case CONFIG_X86_VSMP is not set, limit the number of CPUs to the
> number of CPUs of the first board.
>
> Signed-off-by: Shai Fultheim <shai@scalemp.com>
> [ido@wizery.com: rebased, fixed minor coding-style issues]
> Signed-off-by: Ido Yariv <ido@wizery.com>
> ---
> arch/x86/kernel/vsmp_64.c | 48 +++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 48 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
> index a1d804b..61571fd 100644
> --- a/arch/x86/kernel/vsmp_64.c
> +++ b/arch/x86/kernel/vsmp_64.c
> @@ -15,6 +15,7 @@
> #include <linux/init.h>
> #include <linux/pci_ids.h>
> #include <linux/pci_regs.h>
> +#include <linux/smp.h>
>
> #include <asm/apic.h>
> #include <asm/pci-direct.h>
> @@ -22,6 +23,8 @@
> #include <asm/paravirt.h>
> #include <asm/setup.h>
>
> +#define TOPOLOGY_REGISTER_OFFSET 0x10
> +
> #if defined CONFIG_PCI && defined CONFIG_PARAVIRT
> /*
> * Interrupt control on vSMPowered systems:
> @@ -149,12 +152,57 @@ int is_vsmp_box(void)
> return 0;
> }
> #endif
> +
> +#ifdef CONFIG_X86_VSMP
> +
> +static void __init vsmp_cap_cpus(void)
> +{
> + /* VSMP is enabled, no need to cap cpus */
> +}
> +
> +#else
Please move this int the vsmp_cap_cpus() function and you can
simplify the #ifdef block to:
#ifdef CONFIG_X86_VSMP
/* VSMP is enabled, no need to cap cpus */
return;
#endif
> +
> +static void __init vsmp_cap_cpus(void)
> +{
> + /*
> + * CONFIG_X86_VSMP is not configured, so limit the number CPUs to the
> + * ones present in the first board, unless explicitly overridden by
> + * setup_max_cpus
> + */
> + if (setup_max_cpus == NR_CPUS) {
you can simplify the function and save a level of indentation by
turning this into:
if (setup_max_cpus != NR_CPUS)
return;
> + void __iomem *address;
> + unsigned int cfg, topology, node_shift, maxcpus;
> +
> + /* Read the vSMP Foundation topology register */
> + cfg = read_pci_config(0, 0x1f, 0, PCI_BASE_ADDRESS_0);
> + address = early_ioremap(cfg + TOPOLOGY_REGISTER_OFFSET, 4);
> + if (WARN_ON(!address))
> + return;
> +
> + topology = readl(address);
> + node_shift = (topology >> 16) & 0x7;
> + if (!node_shift)
> + /* The value 0 should be decoded as 8 */
> + node_shift = 8;
> + maxcpus = (topology & ((1 << node_shift) - 1)) + 1;
> +
> + printk(KERN_INFO "vSMP CTL: Capping CPUs to %d "
> + "(CONFIG_X86_VSMP is unset)\n", maxcpus);
Please don't break up format strings - just leave them long and
use pr_info().
> + setup_max_cpus = maxcpus;
> + early_iounmap(address, 4);
> + }
> +}
> +
> +#endif
Looks good and useful otherwise.
Thanks,
Ingo
next prev parent reply other threads:[~2012-05-07 13:24 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-06 12:39 [PATCH 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-06 12:39 ` [PATCH 2/2] vsmp: Ignore IOAPIC IRQ affinity if possible Ido Yariv
2012-04-16 7:39 ` [PATCH v2 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-16 7:39 ` [PATCH v2 2/2] vsmp: Ignore IOAPIC IRQ affinity if possible Ido Yariv
2012-05-07 13:19 ` Ingo Molnar
2012-05-08 0:53 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-09 9:18 ` Ingo Molnar
2012-05-09 21:21 ` Ido Yariv
2012-06-02 22:11 ` [PATCH 1/2] x86: Introduce apic post-initialization callback Ido Yariv
2012-06-02 22:11 ` [PATCH v3 2/2] vsmp: Ignore IOAPIC IRQ affinity if possible Ido Yariv
2012-06-06 15:02 ` [tip:x86/platform] x86/vsmp: " tip-bot for Ravikiran Thirumalai
2012-06-08 8:52 ` Ingo Molnar
2012-06-08 15:43 ` Ido Yariv
2012-06-11 8:58 ` Ingo Molnar
2012-06-11 19:41 ` Ido Yariv
2012-06-14 10:51 ` Ingo Molnar
2012-06-14 15:43 ` [PATCH] x86/vsmp: Fix linker error when CONFIG_PROC_FS is not set Ido Yariv
2012-06-15 14:22 ` [tip:x86/platform] " tip-bot for Ido Yariv
2012-06-06 15:01 ` [tip:x86/platform] x86/platform: Introduce APIC post-initialization callback tip-bot for Ido Yariv
2012-06-14 17:34 ` H. Peter Anvin
2012-06-15 14:33 ` Ido Yariv
2012-04-28 21:33 ` [PATCH v2 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-29 3:05 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-07 13:24 ` Ingo Molnar [this message]
2012-05-08 7:34 ` [PATCH v3] " Ido Yariv
2012-05-08 10:05 ` [tip:x86/platform] " tip-bot for Shai Fultheim
2012-05-08 12:25 ` Ingo Molnar
2012-05-09 8:03 ` Ido Yariv
2012-05-09 8:22 ` Ido Yariv
2012-05-09 8:28 ` [PATCH v4] " Ido Yariv
2012-05-09 15:44 ` Ingo Molnar
2012-05-09 15:55 ` H. Peter Anvin
2012-05-11 19:26 ` Ido Yariv
2012-05-12 1:20 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-09 9:12 ` [tip:x86/platform] " Ingo Molnar
2012-05-09 15:27 ` Shai Fultheim (Shai@ScaleMP.com)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120507132433.GA9808@gmail.com \
--to=mingo@kernel.org \
--cc=hpa@zytor.com \
--cc=ido@wizery.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=shai@scalemp.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.