liboverlay: Enable secure content flag in Mdss Rotator.
- Secured contents shared with hardware should be uncached.
- Secure heap needs to be contiguously allocated & aligned to 1MB,
which is not supported by IOMMU heap.
Change-Id: I6c7c00d5363319f9a6db6e52c1e78e1b16ecd9aa
diff --git a/liboverlay/overlayMdssRot.cpp b/liboverlay/overlayMdssRot.cpp
index 60d63a2..f1024b4 100644
--- a/liboverlay/overlayMdssRot.cpp
+++ b/liboverlay/overlayMdssRot.cpp
@@ -93,7 +93,10 @@
}
void MdssRot::setFlags(const utils::eMdpFlags& flags) {
- // TODO
+ mRotInfo.flags &= ~utils::OV_MDP_SECURE_OVERLAY_SESSION;
+ if (flags & utils::OV_MDP_SECURE_OVERLAY_SESSION) {
+ mRotInfo.flags |= utils::OV_MDP_SECURE_OVERLAY_SESSION;
+ }
}
void MdssRot::setTransform(const utils::eTransform& rot, const bool& rotUsed)
@@ -167,8 +170,9 @@
{
OvMem mem;
OVASSERT(MAP_FAILED == mem.addr(), "MAP failed in open_i");
+ bool isSecure = mRotInfo.flags & utils::OV_MDP_SECURE_OVERLAY_SESSION;
- if(!mem.open(numbufs, bufsz, false)){ // TODO: secure for badger
+ if(!mem.open(numbufs, bufsz, isSecure)){
ALOGE("%s: Failed to open", __func__);
mem.close();
return false;
diff --git a/liboverlay/overlayMem.h b/liboverlay/overlayMem.h
index 60ed8fe..e81c2dc 100644
--- a/liboverlay/overlayMem.h
+++ b/liboverlay/overlayMem.h
@@ -119,8 +119,9 @@
alloc_data data;
int allocFlags = GRALLOC_USAGE_PRIVATE_IOMMU_HEAP;
if(isSecure) {
- allocFlags |= GRALLOC_USAGE_PRIVATE_MM_HEAP;
+ allocFlags = GRALLOC_USAGE_PRIVATE_MM_HEAP;
allocFlags |= GRALLOC_USAGE_PRIVATE_CP_BUFFER;
+ allocFlags |= GRALLOC_USAGE_PRIVATE_UNCACHED;
}
int err = 0;