From: Arnd Bergmann <arnd@arndb.de>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] mach-shmobile: Emma Mobile EV2 SMP prototype code
Date: Wed, 09 May 2012 12:12:08 +0000 [thread overview]
Message-ID: <201205091212.08239.arnd@arndb.de> (raw)
In-Reply-To: <20120509075407.5991.60556.sendpatchset@w520>
On Wednesday 09 May 2012, Magnus Damm wrote:
> static unsigned int __init shmobile_smp_get_core_count(void)
> {
> @@ -31,6 +32,9 @@ static unsigned int __init shmobile_smp_
> if (is_r8a7779())
> return r8a7779_get_core_count();
>
> + if (is_emev2())
> + return emev2_get_core_count();
> +
> return 1;
> }
>
> @@ -41,6 +45,9 @@ static void __init shmobile_smp_prepare_
>
> if (is_r8a7779())
> r8a7779_smp_prepare_cpus();
> +
> + if (is_emev2())
> + emev2_smp_prepare_cpus();
> }
>
> int shmobile_platform_cpu_kill(unsigned int cpu)
> ...
This shows that we really want an abstraction for soc-specific SMP ops
even within one platform, and we'll need the same thing for multiplatform.
Marc Zyngier already proposed a solution for this last year, but I
think we couldn't agree on the details back then before he lost interest.
I think we should pick that up again and get it into 3.6 so the code above
can be simplified and we can do the multiplatform solution. We'll probably
discuss the details in Hong Kong in a couple of weeks, so there is no
point in changing it now, but I'd hope that you can migrate this to
whatever we come up with in the following merge window.
> +#define SMU_GENERAL_REG0 IOMEM(0xe01107c0)
I would keep this together with the other SMU handling code and export a
function to set it, rather than hardcoding the address.
> +static DEFINE_SPINLOCK(scu_lock);
> +static unsigned long tmp;
> +
> +static void modify_scu_cpu_psr(unsigned long set, unsigned long clr)
> +{
> + void __iomem *scu_base = scu_base_addr();
> +
> + spin_lock(&scu_lock);
> + tmp = readl(scu_base + 8);
> + tmp &= ~clr;
> + tmp |= set;
> + spin_unlock(&scu_lock);
> +
> + /* disable cache coherency after releasing the lock */
> + writel(tmp, scu_base + 8);
> +}
This looks strange: why is tmp a file-level static variable rather than
local to the modify_scu_cpu_psr function? Why do you do the writel
without the spinlock held?
Arnd
next prev parent reply other threads:[~2012-05-09 12:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-09 7:54 [PATCH] mach-shmobile: Emma Mobile EV2 SMP prototype code Magnus Damm
2012-05-09 12:12 ` Arnd Bergmann [this message]
2012-05-09 13:15 ` Marc Zyngier
2012-05-09 13:45 ` Arnd Bergmann
2012-05-09 13:59 ` Nicolas Pitre
2012-05-09 14:13 ` Arnd Bergmann
2012-05-09 14:52 ` Magnus Damm
2012-05-11 7:13 ` Simon Horman
2012-05-11 8:05 ` Simon Horman
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=201205091212.08239.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).