mirror of https://gitee.com/openkylin/linux.git
43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
* Software Delegated Exception Interface (SDEI)
|
|
|
|
Firmware implementing the SDEI functions described in ARM document number
|
|
ARM DEN 0054A ("Software Delegated Exception Interface") can be used by
|
|
Linux to receive notification of events such as those generated by
|
|
firmware-first error handling, or from an IRQ that has been promoted to
|
|
a firmware-assisted NMI.
|
|
|
|
The interface provides a number of API functions for registering callbacks
|
|
and enabling/disabling events. Functions are invoked by trapping to the
|
|
privilege level of the SDEI firmware (specified as part of the binding
|
|
below) and passing arguments in a manner specified by the "SMC Calling
|
|
Convention (ARM DEN 0028B):
|
|
|
|
r0 => 32-bit Function ID / return value
|
|
{r1 - r3} => Parameters
|
|
|
|
Note that the immediate field of the trapping instruction must be set
|
|
to #0.
|
|
|
|
The SDEI_EVENT_REGISTER function registers a callback in the kernel
|
|
text to handle the specified event number.
|
|
|
|
The sdei node should be a child node of '/firmware' and have required
|
|
properties:
|
|
|
|
- compatible : should contain:
|
|
* "arm,sdei-1.0" : For implementations complying to SDEI version 1.x.
|
|
|
|
- method : The method of calling the SDEI firmware. Permitted
|
|
values are:
|
|
* "smc" : SMC #0, with the register assignments specified in this
|
|
binding.
|
|
* "hvc" : HVC #0, with the register assignments specified in this
|
|
binding.
|
|
Example:
|
|
firmware {
|
|
sdei {
|
|
compatible = "arm,sdei-1.0";
|
|
method = "smc";
|
|
};
|
|
};
|