diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2015-03-02 18:04:05 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-04-09 21:59:24 -0500 |
commit | 343014b3095462dbec20efe456cbb945d4844b4e (patch) | |
tree | e7a4f1b0b522e63ba0c0baea82a6add01b09772c /src/lib | |
parent | 77f3ab96fd87a9bbecb19aba9f3b48cfb09983bd (diff) | |
download | talos-hostboot-343014b3095462dbec20efe456cbb945d4844b4e.tar.gz talos-hostboot-343014b3095462dbec20efe456cbb945d4844b4e.zip |
Prevent out-of-order data access to FSP mailbox memory area
- Added system call to map FSP mailbox memory with guard permission
- Call new mapping in DMA area init
- Propagate guard permission down to MMIO map
- Apply guard permission in page fault handler
- Updated debug tools to support extra bit in MMIO struct
Change-Id: I8335ac7d3ef57e46d4c8b6c2b2a42b8a0bf7c4b0
Backport: release-fips830
Backport: release-fips820
CQ: SW295345
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16307
Tested-by: Jenkins Server
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/syscall_mm.C | 11 | ||||
-rw-r--r-- | src/lib/syscall_mmio.C | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/syscall_mm.C b/src/lib/syscall_mm.C index b6b17839a..f6aaa75de 100644 --- a/src/lib/syscall_mm.C +++ b/src/lib/syscall_mm.C @@ -137,7 +137,16 @@ void mm_tolerate_ue(uint64_t i_state) */ void* mm_block_map(void* i_paddr, uint64_t i_size) { - return _syscall3(DEV_MAP, i_paddr, (void*)i_size, (void*)1); + return _syscall4(DEV_MAP, i_paddr, (void*)i_size, (void*)1, (void*)0); +} + +/** + * System call to map an arbitrary physical address into the VMM with guarded + * permissions to prevent out-of-order access to instructions and data + */ +void* mm_guarded_block_map(void* i_paddr, uint64_t i_size) +{ + return _syscall4(DEV_MAP, i_paddr, (void*)i_size, (void*)1, (void*)1); } /** diff --git a/src/lib/syscall_mmio.C b/src/lib/syscall_mmio.C index 541528e3b..535e22d39 100644 --- a/src/lib/syscall_mmio.C +++ b/src/lib/syscall_mmio.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2010,2014 */ +/* Contributors Listed Below - COPYRIGHT 2010,2015 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -33,7 +33,7 @@ using namespace Systemcalls; void* mmio_dev_map(void *ra, uint64_t i_devDataSize) { - return _syscall3(DEV_MAP, ra, (void*)i_devDataSize, (void*)0); + return _syscall4(DEV_MAP, ra, (void*)i_devDataSize, (void*)0, (void*)1); } int mmio_dev_unmap(void *ea) |