Thread (1 message) 1 message, 1 author, 2017-08-08

[PATCH 07/11] firmware: arm_sdei: Add driver for Software Delegated Exceptions

From: james.morse@arm.com (James Morse)
Date: 2017-08-08 16:48:01
Also in: kvmarm, linux-devicetree

Hi Dave,

On 19/07/17 14:52, Dave Martin wrote:
On Mon, May 15, 2017 at 06:43:55PM +0100, James Morse wrote:
quoted
The Software Delegated Exception Interface (SDEI) is an ARM standard
for registering callbacks from the platform firmware into the OS.
This is typically used to implement RAS notifications.

Add the code for detecting the SDEI version and the framework for
registering and unregistering events. Subsequent patches will add the
arch-specific backend code and the necessary power management hooks.

Currently only shared events are supported.
quoted
diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c
new file mode 100644
index 000000000000..d22dda5e0fed
--- /dev/null
+++ b/drivers/firmware/arm_sdei.c
+int sdei_mask_local_cpu(unsigned int cpu)
+{
+	int err;
+	struct arm_smccc_res res;
+
+	WARN_ON(preemptible());
+	err = invoke_sdei_fn(&res, SDEI_1_0_FN_SDEI_PE_MASK, 0, 0, 0, 0, 0);
It seems awkward to have to declare res repeatedly when it's basically
unused.  Several callsites seem to do this.  Out of context, this looks
bug-like (though it's not a bug).
After a quick trawl, only the 'qcom' and 'optee' callers use regs other than x0.

Could we make it explicit that the results other than x0 are unwanted by
passing NULL instead?
Looks straightforward, the quirk buffer has the same behaviour. I will put
something together.

invoke_sdei_fn (or some downstream function) could declare its own res
for this case, but at least we'd only have to do that in one place.
arm_smccc_smc() and friends (at least the C interface in the headers)
could do something similar.
Yes, for SDEI I can reduce this weirdness by moving smccc_res up a level.


Thanks,

James
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help