From: Jeff Ohlstein <johlstei@codeaurora.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Daniel Walker <dwalker@codeaurora.org>,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
Bryan Huntsman <bryanh@codeaurora.org>,
Steve Muckle <smuckle@codeaurora.org>,
David Brown <davidb@codeaurora.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 6/6] msm: add SMP support for msm
Date: Wed, 08 Dec 2010 19:41:47 -0800 [thread overview]
Message-ID: <4D004FFB.80100@codeaurora.org> (raw)
In-Reply-To: <20101208152142.GH9777@n2100.arm.linux.org.uk>
Russell King - ARM Linux wrote:
> On Tue, Dec 07, 2010 at 08:28:21PM -0800, Jeff Ohlstein wrote:
>> +int get_core_count(void)
>> +{
>> +#ifdef CONFIG_NR_CPUS
>> + return CONFIG_NR_CPUS;
>> +#else
>> + return 1;
>> +#endif
>>
>
> When would CONFIG_NR_CPUS not be set when SMP is available?
>
> Note that linux/threads.h defines this to 1 if it's not already defined
> anyway. Does this really need to be a separate function?
>
>
Removed.
>> +int boot_secondary(unsigned int cpu, struct task_struct *idle)
>> +{
>> + static int cold_boot_done;
>> + int cnt = 0;
>> + printk(KERN_DEBUG "Starting secondary CPU %d\n", cpu);
>> +
>> + if (cold_boot_done == false) {
>> + prepare_cold_cpu(cpu);
>> + cold_boot_done = true;
>> + }
>> +
>> + pen_release = cpu;
>> + dmac_flush_range((void *)&pen_release,
>> + (void *)(&pen_release + sizeof(pen_release)));
>>
>
> Abuse of the DMA API. See how other platforms deal with this.
>
>
Fixed to use __cpuc_flush_dcache_area and outer_clean_range.
>> + __asm__("sev");
>> + dsb();
>> +
>> + /* Use smp_cross_call() to send a soft interrupt to wake up
>> + * the other core.
>> + */
>> + smp_cross_call(cpumask_of(cpu));
>> +
>> + while (pen_release != 0xFFFFFFFF) {
>>
>
> Why 0xFFFFFFFF rather than -1 like everyone else does?
>
>
Removed due to below.
>> + smp_rmb();
>> + msleep_interruptible(1);
>> + if (cnt++ >= SECONDARY_CPU_WAIT_MS)
>> + break;
>> + }
>>
>
> And why not use the same loop as everyone else does?
>
> timeout = jiffies + (1 * HZ);
> while (time_before(jiffies, timeout)) {
> smp_rmb();
> if (pen_release == -1)
> break;
>
> udelay(10);
> }
>
> IOW, what's the point of being different when you're trying to do the
> same task?
>
>
Done.
>> +
>> + return 0;
>> +}
>> +
>> +/* Mask for edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */
>> +#define GIC_PPI_EDGE_MASK 0xFFFFD7FF
>> +
>> +/* Initialization routine for secondary CPUs after they are brought out of
>> + * reset.
>> +*/
>> +void platform_secondary_init(unsigned int cpu)
>> +{
>> + printk(KERN_DEBUG "%s: cpu:%d\n", __func__, cpu);
>> +
>> + trace_hardirqs_off();
>>
>
> This has been moved into the generic SMP code.
>
>
I've rebased onto your gic patches and your smp series, and removed this.
>> + if (!machine_is_msm8x60_sim())
>> + writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET);
>>
>
> The gic secondary CPU initialization now takes care of this in my tree.
>
>
Removed.
>> +
>> + /*
>> + * setup GIC (GIC number NOT CPU number and the base address of the
>> + * GIC CPU interface
>> + */
>> + gic_cpu_init(0, MSM_QGIC_CPU_BASE);
>>
>
> This has been renamed to gic_secondary_init() for 2.6.38.
>
>
Done.
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
WARNING: multiple messages have this Message-ID (diff)
From: johlstei@codeaurora.org (Jeff Ohlstein)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 6/6] msm: add SMP support for msm
Date: Wed, 08 Dec 2010 19:41:47 -0800 [thread overview]
Message-ID: <4D004FFB.80100@codeaurora.org> (raw)
In-Reply-To: <20101208152142.GH9777@n2100.arm.linux.org.uk>
Russell King - ARM Linux wrote:
> On Tue, Dec 07, 2010 at 08:28:21PM -0800, Jeff Ohlstein wrote:
>> +int get_core_count(void)
>> +{
>> +#ifdef CONFIG_NR_CPUS
>> + return CONFIG_NR_CPUS;
>> +#else
>> + return 1;
>> +#endif
>>
>
> When would CONFIG_NR_CPUS not be set when SMP is available?
>
> Note that linux/threads.h defines this to 1 if it's not already defined
> anyway. Does this really need to be a separate function?
>
>
Removed.
>> +int boot_secondary(unsigned int cpu, struct task_struct *idle)
>> +{
>> + static int cold_boot_done;
>> + int cnt = 0;
>> + printk(KERN_DEBUG "Starting secondary CPU %d\n", cpu);
>> +
>> + if (cold_boot_done == false) {
>> + prepare_cold_cpu(cpu);
>> + cold_boot_done = true;
>> + }
>> +
>> + pen_release = cpu;
>> + dmac_flush_range((void *)&pen_release,
>> + (void *)(&pen_release + sizeof(pen_release)));
>>
>
> Abuse of the DMA API. See how other platforms deal with this.
>
>
Fixed to use __cpuc_flush_dcache_area and outer_clean_range.
>> + __asm__("sev");
>> + dsb();
>> +
>> + /* Use smp_cross_call() to send a soft interrupt to wake up
>> + * the other core.
>> + */
>> + smp_cross_call(cpumask_of(cpu));
>> +
>> + while (pen_release != 0xFFFFFFFF) {
>>
>
> Why 0xFFFFFFFF rather than -1 like everyone else does?
>
>
Removed due to below.
>> + smp_rmb();
>> + msleep_interruptible(1);
>> + if (cnt++ >= SECONDARY_CPU_WAIT_MS)
>> + break;
>> + }
>>
>
> And why not use the same loop as everyone else does?
>
> timeout = jiffies + (1 * HZ);
> while (time_before(jiffies, timeout)) {
> smp_rmb();
> if (pen_release == -1)
> break;
>
> udelay(10);
> }
>
> IOW, what's the point of being different when you're trying to do the
> same task?
>
>
Done.
>> +
>> + return 0;
>> +}
>> +
>> +/* Mask for edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */
>> +#define GIC_PPI_EDGE_MASK 0xFFFFD7FF
>> +
>> +/* Initialization routine for secondary CPUs after they are brought out of
>> + * reset.
>> +*/
>> +void platform_secondary_init(unsigned int cpu)
>> +{
>> + printk(KERN_DEBUG "%s: cpu:%d\n", __func__, cpu);
>> +
>> + trace_hardirqs_off();
>>
>
> This has been moved into the generic SMP code.
>
>
I've rebased onto your gic patches and your smp series, and removed this.
>> + if (!machine_is_msm8x60_sim())
>> + writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET);
>>
>
> The gic secondary CPU initialization now takes care of this in my tree.
>
>
Removed.
>> +
>> + /*
>> + * setup GIC (GIC number NOT CPU number and the base address of the
>> + * GIC CPU interface
>> + */
>> + gic_cpu_init(0, MSM_QGIC_CPU_BASE);
>>
>
> This has been renamed to gic_secondary_init() for 2.6.38.
>
>
Done.
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
next prev parent reply other threads:[~2010-12-09 3:41 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-08 4:28 [PATCH v2 0/6] SMP support for msm Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` [PATCH v2 1/6] arm: dma-mapping: move consistent_init to early_initcall Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` [PATCH v2 2/6] msm: Secure Channel Manager (SCM) support Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 16:53 ` Russell King - ARM Linux
2010-12-08 16:53 ` Russell King - ARM Linux
2010-12-08 19:59 ` Stephen Boyd
2010-12-08 19:59 ` Stephen Boyd
2010-12-08 4:28 ` [PATCH v2 3/6] msm: scm-boot: Support for setting cold/warm boot addresses Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` [PATCH v2 4/6] msm: timer: SMP timer support for msm Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 16:39 ` Russell King - ARM Linux
2010-12-08 16:39 ` Russell King - ARM Linux
2010-12-09 4:22 ` Jeff Ohlstein
2010-12-09 4:22 ` Jeff Ohlstein
2010-12-10 2:07 ` Jeff Ohlstein
2010-12-10 2:07 ` Jeff Ohlstein
2010-12-10 2:24 ` Thomas Gleixner
2010-12-10 2:24 ` Thomas Gleixner
2010-12-08 4:28 ` [PATCH v2 5/6] msm: hotplug: support cpu hotplug on msm Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 15:14 ` Russell King - ARM Linux
2010-12-08 15:14 ` Russell King - ARM Linux
2010-12-08 15:23 ` Russell King - ARM Linux
2010-12-08 15:23 ` Russell King - ARM Linux
2010-12-08 4:28 ` [PATCH v2 6/6] msm: add SMP support for msm Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 4:28 ` Jeff Ohlstein
2010-12-08 15:21 ` Russell King - ARM Linux
2010-12-08 15:21 ` Russell King - ARM Linux
2010-12-09 3:41 ` Jeff Ohlstein [this message]
2010-12-09 3:41 ` Jeff Ohlstein
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=4D004FFB.80100@codeaurora.org \
--to=johlstei@codeaurora.org \
--cc=bryanh@codeaurora.org \
--cc=davidb@codeaurora.org \
--cc=dwalker@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=smuckle@codeaurora.org \
/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.