Commit Graph

31 Commits

Author SHA1 Message Date
Ard Biesheuvel e077a93dc6 MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM
When capsule updates are staged for processing after a warm reboot,
they are copied into memory with the MMU and caches enabled. When
the capsule PEI gets around to coalescing the capsule, the MMU and
caches may still be disabled, and so on architectures where uncached
accesses are incoherent with the caches (such as ARM and AARCH64),
we need to ensure that the data passed into UpdateCapsule() is
written back to main memory before performing the warm reboot.

Unfortunately, on ARM, the only type of cache maintenance instructions
that are suitable for this purpose operate on virtual addresses only,
and given that the UpdateCapsule() prototype includes the physical
address of a linked list of scatter/gather data structures that are
mapped at an address that is unknown to the firmware (and may not even
be mapped at all when UpdateCapsule() is invoked), we can only perform
this cache maintenance at boot time. Fortunately, both Windows and Linux
only invoke UpdateCapsule() before calling ExitBootServices(), so this
is not a problem in practice.

In the future, we may propose adding a secure firmware service that
permits performing the cache maintenance at OS runtime, in which case
this code may be enhanced to call that service if available. For now,
we just fail any UpdateCapsule() calls performed at OS runtime on ARM.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2018-06-15 18:17:44 +02:00
Liming Gao 307a19a7ec MdeModulePkg: Remove unsupported PcdExpression usage in module INF
https://bugzilla.tianocore.org/show_bug.cgi?id=442

PcdExpression used in INF to control PCD and Source is unsupported feature.
Current sample usage in module INF brings confuse.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-04-06 12:54:49 +08:00
Star Zeng b2d2a7f3f2 MdeModulePkg CapsuleRuntimeDxe: Reduce reserved memory consumption
Reduce reserved memory consumption by page table buffer,
then OS can have more available memory to use.
Take PhysicalAddressBits = 48 and 2MB page granularity as example,
1:1 Virtual to Physical identity mapping page table buffer needs to be
((512 + 1) * 512 + 1) * 4096 = 1075843072 bytes = 0x40201000 bytes.

The code is updated to only allocate 2 pages (1G page enabled) or
6 pages for 4G page table, and 8 extra pages to handles > 4G request
by page fault.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18070 6f19259b-4bc3-4df7-8a09-765794883524
2015-07-27 03:05:13 +00:00
Elvin Li fd9abd045e Allocate EfiReservedMemoryType of memory.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Elvin Li <elvin.li@intel.com>
Signed-off-by: Liming Gao <liming.gao@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15977 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-29 09:01:52 +00:00
Zeng, Star 6036e94dc9 MdeModulePkg: INF/DEC file updates to EDK II packages
1. Usage information in INF file comment blocks are either incomplete or incorrect.  
This includes usage information for Protocols/PPIs/GUIDs/PCDs/HOBs/Events/BootModes.  
The syntax for usage information in comment blocks is defined in the EDK II Module Information (INF) Specification

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zeng, Star <star.zeng@intel.com>
Reviewed-by: Gao, Liming <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15962 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-28 06:34:06 +00:00
Elvin Li b5040e4c55 1. CapsuleLongModeBuffer variable should not have EFI_VARIABLE_RUNTIME_ACCESS attribute.
2.	CapsuleLongModeBuffer variable should be set to Read-Only.  It should not be changed by someone else.
3.	Introduce a new PCD PcdIdentifyMappingPageTablePtr to share the same range of page table between AcpiS3 and Capsule.
4.	Capsule stack size is allocated from PcdCapsulePeiLongModeStackSize.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Elvin Li <elvin.li@intel.com>
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15909 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-26 12:26:32 +00:00
czhang46 566771b0a7 Enable UEFI firmware to support FMP capsule format.
signed-off-by : Chao Zhang <chao.b.zhang@intel.com>
reviewed-by   : Gao Liming <liming.gao@intel.com>
reviewed-by   : Yao Jiewen <Jiewen.yao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14773 6f19259b-4bc3-4df7-8a09-765794883524
2013-10-15 01:31:49 +00:00
Harry Liebel 716e507720 MdeModulePkg: Added ARM Aarch64 architecture support
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Harry Liebel <Harry.Liebel@arm.com>
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14530 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-07 11:28:15 +00:00
li-elvin ab7017fe2b Add capsule > 4GB support. When capsule data is put above 4GB, IA32 PEI transfers to long mode to get capsule data.
Signed-off-by: li-elvin
Reviewed-by: lgao4, mdkinney


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12264 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-02 11:34:35 +00:00
ydong10 639710791a Enhance inf and dec file to follow specs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11392 6f19259b-4bc3-4df7-8a09-765794883524
2011-03-14 08:43:59 +00:00
hhtian e5eed7d364 Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10418 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-24 09:33:45 +00:00
lgao4 6bfbb5f0e0 1. Correct File header to ## @file
2. Remove unnecessary .common] postfix on section.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10052 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-24 00:21:16 +00:00
li-elvin f03ccf59ba Enhance UpdateCapsule () to support calling multiple times.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10044 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-23 02:33:17 +00:00
lgao4 02bf7b8865 remove the unnecessary comments.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8987 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-24 02:43:22 +00:00
lgao4 f205cbb94f Add comments to specify Capsule services provided by this driver can't be used for IPF arch when OS enter into physical mode.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8985 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-24 00:06:53 +00:00
lgao4 3f9dcac0f2 Remove the inaccurate comments.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8967 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-17 09:55:44 +00:00
lgao4 577e30cdb4 Add comments for CapsuleRuntimeDxe driver to specify this driver may not full support runtime usage for capsule services on IPF arch platform.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8963 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-17 05:01:30 +00:00
lgao4 97b2c9b514 Update PeiCore to handle FvImage with PI FV extension header
Update Capsule PCDs PcdMaxSizePopulateCapsule and  PcdMaxSizeNonPopulateCapsule to the flexible PCD type.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7805 6f19259b-4bc3-4df7-8a09-765794883524
2009-03-05 05:05:57 +00:00
lgao4 de5b0df93f Correct minor comments in meta data file.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7697 6f19259b-4bc3-4df7-8a09-765794883524
2009-02-25 15:35:58 +00:00
klu2 58612f248f Fix typo.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7683 6f19259b-4bc3-4df7-8a09-765794883524
2009-02-25 10:50:45 +00:00
lgao4 e561879137 Add INF extension Information
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7228 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-09 06:26:42 +00:00
lgao4 109e9a6156 Code scrub for the following drivers and librarys.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7172 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-04 03:20:55 +00:00
gikidy cfc8865f17 Remove some useless EDK_RELEASE_VERSION, EFI_SPECIFICATION_VERSION ,and review VALID_ARCHITECTURES in inf files with DSC file.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6818 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-03 09:08:05 +00:00
lgao4 5d69642deb Code scrub for the Capsule, SecurityStub, and Crc32 library instance.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5441 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-09 13:33:20 +00:00
qhuang8 13d40eddeb Update all files to follow doxygen style file header.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5025 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-09 05:50:10 +00:00
lgao4 6ee65722c7 Update CapsuleDriver to use capsule library.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4365 6f19259b-4bc3-4df7-8a09-765794883524
2007-12-05 09:58:33 +00:00
qwang12 c713e7c8a0 gEfiVariableWriteArchProtocolGuid should be used for the depex as defined in PI spec as this driver set a NV variable.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4292 6f19259b-4bc3-4df7-8a09-765794883524
2007-11-08 05:28:44 +00:00
qhuang8 b3af5df67b Update all INF, DEC and DSC file to confirm to newest INF spec 0.44, DEC spec 0.41, DSC spec 0.40.
Mainly PCD syntax update.
Check in new build.exe and GenFds.exe
Check in PcdSyntaxUpdate.exe tool. 

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3744 6f19259b-4bc3-4df7-8a09-765794883524
2007-08-30 09:11:54 +00:00
yshang1 623ad724e1 Add dependent packages in INF of modules.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3731 6f19259b-4bc3-4df7-8a09-765794883524
2007-08-29 08:52:49 +00:00
vanjeff dd0687a4b1 remove some comments introduced by tools.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3383 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-20 04:33:45 +00:00
qhuang8 74fea867f4 Adjust directory structures.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3323 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-18 14:31:27 +00:00