All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Morse <james.morse-5wv7dgnIgG8@public.gmane.org>
To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>,
	Christoffer Dall
	<christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Lorenzo Pieralisi
	<lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>,
	Loc Ho <lho-qTEPVZfXA3Y@public.gmane.org>
Subject: Re: [PATCH v4 10/13] firmware: arm_sdei: Add support for CPU and system power states
Date: Tue, 24 Oct 2017 18:34:19 +0100	[thread overview]
Message-ID: <59EF799B.4040802@arm.com> (raw)
In-Reply-To: <20171018171747.GI21820-5wv7dgnIgG8@public.gmane.org>

Hi Will,

On 18/10/17 18:17, Will Deacon wrote:
> On Tue, Oct 17, 2017 at 06:44:29PM +0100, James Morse wrote:
>> When a CPU enters an idle lower-power state or is powering off, we
>> need to mask SDE events so that no events can be delivered while we
>> are messing with the MMU as the registered entry points won't be valid.
>>
>> If the system reboots, we want to unregister all events and mask the CPUs.
>> For kexec this allows us to hand a clean slate to the next kernel
>> instead of relying on it to call sdei_{private,system}_data_reset().
>>
>> For hibernate we unregister all events and re-register them on restore,
>> in case we restored with the SDE code loaded at a different address.
>> (e.g. KASLR).
>>
>> Add all the notifiers necessary to do this. We only support shared events
>> so all events are left registered and enabled over CPU hotplug.

>>  static void sdei_smccc_smc(unsigned long function_id,
>>  			   unsigned long arg0, unsigned long arg1,
>>  			   unsigned long arg2, unsigned long arg3,
>> @@ -544,9 +742,36 @@ static int sdei_probe(struct platform_device *pdev)
>>  		return 0;
>>  	}
>>  
>> +	err = cpuhp_setup_state_nocalls(CPUHP_AP_ARM_SDEI_STARTING, "SDEI",
>> +				&sdei_cpuhp_up, &sdei_cpuhp_down);
>> +	if (err) {
>> +		pr_warn("Failed to register CPU hotplug notifier...\n");
>> +		return err;
>> +	}
> 
> What prevents CPU hotplug events coming in here?

Nothing, but what would trigger them? This is after the arch code has brought up
secondaries, but before user space is running.


No events are registered by this point, so all that could go wrong is a
freshly-arrived CPU is unmasked, then this probe method fails and assumes it
left cores masked. If you think its possible I can post a patch to bolt it down
some more.

Thanks for taking a look!


Thanks,

James
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: james.morse@arm.com (James Morse)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 10/13] firmware: arm_sdei: Add support for CPU and system power states
Date: Tue, 24 Oct 2017 18:34:19 +0100	[thread overview]
Message-ID: <59EF799B.4040802@arm.com> (raw)
In-Reply-To: <20171018171747.GI21820@arm.com>

Hi Will,

On 18/10/17 18:17, Will Deacon wrote:
> On Tue, Oct 17, 2017 at 06:44:29PM +0100, James Morse wrote:
>> When a CPU enters an idle lower-power state or is powering off, we
>> need to mask SDE events so that no events can be delivered while we
>> are messing with the MMU as the registered entry points won't be valid.
>>
>> If the system reboots, we want to unregister all events and mask the CPUs.
>> For kexec this allows us to hand a clean slate to the next kernel
>> instead of relying on it to call sdei_{private,system}_data_reset().
>>
>> For hibernate we unregister all events and re-register them on restore,
>> in case we restored with the SDE code loaded at a different address.
>> (e.g. KASLR).
>>
>> Add all the notifiers necessary to do this. We only support shared events
>> so all events are left registered and enabled over CPU hotplug.

>>  static void sdei_smccc_smc(unsigned long function_id,
>>  			   unsigned long arg0, unsigned long arg1,
>>  			   unsigned long arg2, unsigned long arg3,
>> @@ -544,9 +742,36 @@ static int sdei_probe(struct platform_device *pdev)
>>  		return 0;
>>  	}
>>  
>> +	err = cpuhp_setup_state_nocalls(CPUHP_AP_ARM_SDEI_STARTING, "SDEI",
>> +				&sdei_cpuhp_up, &sdei_cpuhp_down);
>> +	if (err) {
>> +		pr_warn("Failed to register CPU hotplug notifier...\n");
>> +		return err;
>> +	}
> 
> What prevents CPU hotplug events coming in here?

Nothing, but what would trigger them? This is after the arch code has brought up
secondaries, but before user space is running.


No events are registered by this point, so all that could go wrong is a
freshly-arrived CPU is unmasked, then this probe method fails and assumes it
left cores masked. If you think its possible I can post a patch to bolt it down
some more.

Thanks for taking a look!


Thanks,

James

  parent reply	other threads:[~2017-10-24 17:34 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-17 17:44 [PATCH v4 00/13] arm64/firmware: Software Delegated Exception Interface James Morse
2017-10-17 17:44 ` James Morse
2017-10-17 17:44 ` [PATCH v4 04/13] arm64: alternatives: use tpidr_el2 on VHE hosts James Morse
2017-10-17 17:44   ` James Morse
2017-10-18 11:00   ` Catalin Marinas
2017-10-18 11:00     ` Catalin Marinas
2017-10-17 17:44 ` [PATCH v4 05/13] KVM: arm64: Stop save/restoring host tpidr_el1 on VHE James Morse
2017-10-17 17:44   ` James Morse
2017-10-17 17:44 ` [PATCH v4 06/13] Docs: dt: add devicetree binding for describing arm64 SDEI firmware James Morse
2017-10-17 17:44   ` James Morse
2017-10-17 17:44 ` [PATCH v4 09/13] arm64: kernel: Add arch-specific SDEI entry code and CPU masking James Morse
2017-10-17 17:44   ` James Morse
     [not found]   ` <20171017174432.1684-10-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-18 11:18     ` Catalin Marinas
2017-10-18 11:18       ` Catalin Marinas
2017-10-17 17:44 ` [PATCH v4 11/13] firmware: arm_sdei: add support for CPU private events James Morse
2017-10-17 17:44   ` James Morse
     [not found]   ` <20171017174432.1684-12-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-18 11:11     ` Catalin Marinas
2017-10-18 11:11       ` Catalin Marinas
2017-10-18 17:19     ` Will Deacon
2017-10-18 17:19       ` Will Deacon
     [not found]       ` <20171018171959.GJ21820-5wv7dgnIgG8@public.gmane.org>
2017-10-24 17:34         ` James Morse
2017-10-24 17:34           ` James Morse
     [not found]           ` <59EF798A.9000609-5wv7dgnIgG8@public.gmane.org>
2017-11-01 15:59             ` James Morse
2017-11-01 15:59               ` James Morse
     [not found] ` <20171017174432.1684-1-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-17 17:44   ` [PATCH v4 01/13] KVM: arm64: Store vcpu on the stack during __guest_enter() James Morse
2017-10-17 17:44     ` James Morse
2017-10-17 17:44   ` [PATCH v4 02/13] KVM: arm/arm64: Convert kvm_host_cpu_state to a static per-cpu allocation James Morse
2017-10-17 17:44     ` James Morse
2017-10-17 17:44   ` [PATCH v4 03/13] KVM: arm64: Change hyp_panic()s dependency on tpidr_el2 James Morse
2017-10-17 17:44     ` James Morse
2017-10-17 17:44   ` [PATCH v4 07/13] firmware: arm_sdei: Add driver for Software Delegated Exceptions James Morse
2017-10-17 17:44     ` James Morse
2017-10-18 11:09     ` Catalin Marinas
2017-10-18 11:09       ` Catalin Marinas
2017-10-17 17:44   ` [PATCH v4 08/13] arm64: Add vmap_stack header file James Morse
2017-10-17 17:44     ` James Morse
     [not found]     ` <20171017174432.1684-9-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-18 11:10       ` Catalin Marinas
2017-10-18 11:10         ` Catalin Marinas
2017-10-17 17:44   ` [PATCH v4 10/13] firmware: arm_sdei: Add support for CPU and system power states James Morse
2017-10-17 17:44     ` James Morse
     [not found]     ` <20171017174432.1684-11-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-18 11:11       ` Catalin Marinas
2017-10-18 11:11         ` Catalin Marinas
2017-10-18 17:17       ` Will Deacon
2017-10-18 17:17         ` Will Deacon
     [not found]         ` <20171018171747.GI21820-5wv7dgnIgG8@public.gmane.org>
2017-10-24 17:34           ` James Morse [this message]
2017-10-24 17:34             ` James Morse
     [not found]             ` <59EF799B.4040802-5wv7dgnIgG8@public.gmane.org>
2017-10-25 14:43               ` Will Deacon
2017-10-25 14:43                 ` Will Deacon
2017-10-17 17:44   ` [PATCH v4 12/13] arm64: acpi: Remove __init from acpi_psci_use_hvc() for use by SDEI James Morse
2017-10-17 17:44     ` James Morse
2017-10-18 11:11     ` Catalin Marinas
2017-10-18 11:11       ` Catalin Marinas
2017-10-17 17:44   ` [PATCH v4 13/13] firmware: arm_sdei: Discover SDEI support via ACPI James Morse
2017-10-17 17:44     ` James Morse
     [not found]     ` <20171017174432.1684-14-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-10-18 11:12       ` Catalin Marinas
2017-10-18 11:12         ` Catalin Marinas
2017-10-18 17:16   ` [PATCH v4 00/13] arm64/firmware: Software Delegated Exception Interface Will Deacon
2017-10-18 17:16     ` Will Deacon
2017-10-30 15:58   ` [PATCH v4 14/13] firmware: arm_sdei: Move cpuhotplug registration later James Morse
2017-10-30 15:58     ` James Morse
2017-11-01 15:59 ` [PATCH 15/13] firmware: arm_sdei: move the frozen flag under the spinlock James Morse
2017-11-01 15:59   ` James Morse
     [not found]   ` <20171101155941.19432-1-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-11-08 15:11     ` James Morse
2017-11-08 15:11       ` James Morse
     [not found]       ` <5A031E9E.2090809-5wv7dgnIgG8@public.gmane.org>
2017-11-08 16:06         ` [PATCH v4 15/13] firmware: arm_sdei: be more robust against cpu-hotplug James Morse
2017-11-08 16:06           ` James Morse
     [not found]           ` <20171108160624.10355-1-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-11-13 11:01             ` Will Deacon
2017-11-13 11:01               ` Will Deacon

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=59EF799B.4040802@arm.com \
    --to=james.morse-5wv7dgnigg8@public.gmane.org \
    --cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
    --cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
    --cc=lho-qTEPVZfXA3Y@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org \
    --cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@public.gmane.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.