IntelSiliconPkg/IntelVTdDxe: Improve performance.
This patch is to improve IOMMU performance. All WBINVD is removed due to performance issue. CLFLUSH by WriteBackDataCacheRange() is used to only flush the context table or second level page table if they are changed. This patch also removed some unused functions. Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
@@ -73,6 +73,7 @@ CreateExtContextEntry (
|
||||
ExtRootEntry->Bits.UpperContextTablePointerLo = (UINT32) RShiftU64 ((UINT64)(UINTN)Buffer, 12) + 1;
|
||||
ExtRootEntry->Bits.UpperContextTablePointerHi = (UINT32) RShiftU64 (RShiftU64 ((UINT64)(UINTN)Buffer, 12) + 1, 20);
|
||||
ExtRootEntry->Bits.UpperPresent = 1;
|
||||
FlushPageTableMemory (VtdIndex, (UINTN)ExtRootEntry, sizeof(*ExtRootEntry));
|
||||
Buffer = (UINT8 *)Buffer + EFI_PAGES_TO_SIZE (ContextPages);
|
||||
}
|
||||
|
||||
@@ -92,6 +93,7 @@ CreateExtContextEntry (
|
||||
ExtContextEntry->Bits.AddressWidth = 0x2;
|
||||
break;
|
||||
}
|
||||
FlushPageTableMemory (VtdIndex, (UINTN)ExtContextEntry, sizeof(*ExtContextEntry));
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
|
Reference in New Issue
Block a user