Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
b39d2896
Unverified
Commit
b39d2896
authored
Feb 27, 2018
by
davidcunado-arm
Committed by
GitHub
Feb 27, 2018
Browse files
Merge pull request #1283 from jeenu-arm/sdei-fixes
SDEI fixes
parents
ba91a001
f2928f5b
Changes
2
Hide whitespace changes
Inline
Side-by-side
docs/porting-guide.rst
View file @
b39d2896
...
...
@@ -2022,9 +2022,9 @@ This macro must be defined to the EL3 exception priority level associated with
Critical SDEI events on the platform. This must have a lower value (therefore of
higher priority) than ``PLAT_SDEI_NORMAL_PRI``.
It's recommended that
SDEI exception priorities
in general are assigned the
lowest among Secure priorities.
Among the SDEI exceptions, Critical SDEI
priority must be higher than Normal
SDEI priority.
**Note**:
SDEI exception priorities
must be the lowest among Secure priorities.
Among the SDEI exceptions, Critical SDEI
priority must be higher than Normal
SDEI priority.
Functions
.........
...
...
services/std_svc/sdei/sdei_intr_mgmt.c
View file @
b39d2896
/*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2017
-2018
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -556,7 +556,7 @@ int sdei_event_complete(int resume, uint64_t pc)
unsigned
int
client_el
=
sdei_client_el
();
/* Return error if called without an active event */
disp_ctx
=
pop
_dispatch
();
disp_ctx
=
get_outstanding
_dispatch
();
if
(
!
disp_ctx
)
return
SDEI_EDENY
;
...
...
@@ -566,15 +566,8 @@ int sdei_event_complete(int resume, uint64_t pc)
map
=
disp_ctx
->
map
;
assert
(
map
);
se
=
get_event_entry
(
map
);
SDEI_LOG
(
"EOI:%lx, %d spsr:%lx elr:%lx
\n
"
,
read_mpidr_el1
(),
map
->
ev_num
,
read_spsr_el3
(),
read_elr_el3
());
if
(
is_event_shared
(
map
))
sdei_map_lock
(
map
);
act
=
resume
?
DO_COMPLETE_RESUME
:
DO_COMPLETE
;
if
(
!
can_sdei_state_trans
(
se
,
act
))
{
if
(
is_event_shared
(
map
))
...
...
@@ -582,6 +575,15 @@ int sdei_event_complete(int resume, uint64_t pc)
return
SDEI_EDENY
;
}
/* Having done sanity checks, pop dispatch */
pop_dispatch
();
SDEI_LOG
(
"EOI:%lx, %d spsr:%lx elr:%lx
\n
"
,
read_mpidr_el1
(),
map
->
ev_num
,
read_spsr_el3
(),
read_elr_el3
());
if
(
is_event_shared
(
map
))
sdei_map_lock
(
map
);
/*
* Restore Non-secure to how it was originally interrupted. Once done,
* it's up-to-date with the saved copy.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment