From: Itaru Kitayama <itaru.kitayama@riken.jp>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Will Deacon <will.deacon@arm.com>,
linux-acpi@vger.kernel.org, Hanjun Guo <hanjun.guo@linaro.org>,
Mark Salter <msalter@redhat.com>, Al Stone <ahs3@redhat.com>,
linux-arm-kernel@lists.infradead.org, Loc Ho <lho@apm.com>
Subject: Re: [PATCH v3] ARM64: kernel: implement ACPI parking protocol
Date: Fri, 26 Feb 2016 09:23:56 +0900 [thread overview]
Message-ID: <56CF9B1C.6050303@riken.jp> (raw)
In-Reply-To: <20160225092427.GA31728@red-moon>
Hi Lorenzo,
I have applied your latest patch on top of today's HEAD of for-next/core
(cac4b8cd),
and confirmed the kernel boots fine with acpi=force. No lockdep warning
was seen,
all 8 CPUs were successfully brought up.
Itaru
On 2/25/16 6:24 PM, Lorenzo Pieralisi wrote:
> On Thu, Feb 25, 2016 at 08:28:30AM +0900, Itaru Kitayama wrote:
>> Lorenzo,
>>
>> On Mustang the lockdep warning I reported to you is disappeared and
>> the system gets to
>> the prompt as you implemented, however only 7 CPUs out of 8 brought up.
> It is because, as I mentioned in the other reply to this thread,
> the VA should be stashed before setting up the mailboxes, patch below,
> that should be final (I tested it on AMD Seattle too), please give it a go.
>
> Thanks,
> Lorenzo
>
> -- >8 --
> diff --git a/arch/arm64/kernel/acpi_parking_protocol.c b/arch/arm64/kernel/acpi_parking_protocol.c
> index 4b1e5a7..dd671ef 100644
> --- a/arch/arm64/kernel/acpi_parking_protocol.c
> +++ b/arch/arm64/kernel/acpi_parking_protocol.c
> @@ -21,7 +21,14 @@
>
> #include <asm/cpu_ops.h>
>
> +struct parking_protocol_mailbox {
> + __le32 cpu_id;
> + __le32 reserved;
> + __le64 entry_point;
> +};
> +
> struct cpu_mailbox_entry {
> + struct parking_protocol_mailbox __iomem *mailbox;
> phys_addr_t mailbox_addr;
> u8 version;
> u8 gic_cpu_id;
> @@ -59,12 +66,6 @@ static int acpi_parking_protocol_cpu_prepare(unsigned int cpu)
> return 0;
> }
>
> -struct parking_protocol_mailbox {
> - __le32 cpu_id;
> - __le32 reserved;
> - __le64 entry_point;
> -};
> -
> static int acpi_parking_protocol_cpu_boot(unsigned int cpu)
> {
> struct cpu_mailbox_entry *cpu_entry = &cpu_mailbox_entries[cpu];
> @@ -97,6 +98,12 @@ static int acpi_parking_protocol_cpu_boot(unsigned int cpu)
> }
>
> /*
> + * stash the mailbox address mapping to use it for further checks
> + * in postboot method
> + */
> + cpu_entry->mailbox = mailbox;
> +
> + /*
> * We write the entry point and cpu id as LE regardless of the
> * native endianness of the kernel. Therefore, any boot-loaders
> * that read this address need to convert this address to the
> @@ -107,8 +114,6 @@ static int acpi_parking_protocol_cpu_boot(unsigned int cpu)
>
> arch_send_wakeup_ipi_mask(cpumask_of(cpu));
>
> - iounmap(mailbox);
> -
> return 0;
> }
>
> @@ -116,32 +121,15 @@ static void acpi_parking_protocol_cpu_postboot(void)
> {
> int cpu = smp_processor_id();
> struct cpu_mailbox_entry *cpu_entry = &cpu_mailbox_entries[cpu];
> - struct parking_protocol_mailbox __iomem *mailbox;
> + struct parking_protocol_mailbox __iomem *mailbox = cpu_entry->mailbox;
> __le64 entry_point;
>
> - /*
> - * Map mailbox memory with attribute device nGnRE (ie ioremap -
> - * this deviates from the parking protocol specifications since
> - * the mailboxes are required to be mapped nGnRnE; the attribute
> - * discrepancy is harmless insofar as the protocol specification
> - * is concerned).
> - * If the mailbox is mistakenly allocated in the linear mapping
> - * by FW ioremap will fail since the mapping will be prevented
> - * by the kernel (it clashes with the linear mapping attributes
> - * specifications).
> - */
> - mailbox = ioremap(cpu_entry->mailbox_addr, sizeof(*mailbox));
> - if (!mailbox)
> - return;
> -
> entry_point = readl_relaxed(&mailbox->entry_point);
> /*
> * Check if firmware has cleared the entry_point as expected
> * by the protocol specification.
> */
> WARN_ON(entry_point);
> -
> - iounmap(mailbox);
> }
>
> const struct cpu_operations acpi_parking_protocol_ops = {
prev parent reply other threads:[~2016-02-26 0:24 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 11:10 [PATCH v3] ARM64: kernel: implement ACPI parking protocol Lorenzo Pieralisi
2016-01-26 17:47 ` Lorenzo Pieralisi
2016-01-27 10:23 ` Ard Biesheuvel
2016-01-27 11:46 ` Lorenzo Pieralisi
2016-01-26 23:13 ` Loc Ho
2016-01-27 11:51 ` Lorenzo Pieralisi
2016-01-27 17:41 ` Loc Ho
2016-02-02 18:26 ` Catalin Marinas
2016-02-03 11:21 ` Lorenzo Pieralisi
2016-02-03 16:18 ` Catalin Marinas
2016-02-24 14:18 ` Lorenzo Pieralisi
2016-02-24 15:03 ` Lorenzo Pieralisi
2016-02-24 23:28 ` Itaru Kitayama
2016-02-25 9:24 ` Lorenzo Pieralisi
2016-02-25 20:58 ` Loc Ho
2016-02-26 0:23 ` Itaru Kitayama [this message]
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=56CF9B1C.6050303@riken.jp \
--to=itaru.kitayama@riken.jp \
--cc=ahs3@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=hanjun.guo@linaro.org \
--cc=lho@apm.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=msalter@redhat.com \
--cc=sudeep.holla@arm.com \
--cc=will.deacon@arm.com \
/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