<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/MdePkg/Library/SmmMemoryAllocationLib/MemoryAllocationLib.c, branch master</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=master</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2023-06-21T08:00:04+00:00</updated>
<entry>
<title>MdePkg: Code optimization to SMM InternalAllocateAlignedPages</title>
<updated>2023-06-21T08:00:04+00:00</updated>
<author>
<name>duntan</name>
<email>dun.tan@intel.com</email>
</author>
<published>2023-05-18T07:31:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=fcd71642df9a3a5932a2db116acc6fe23458d8f5'/>
<id>urn:sha1:fcd71642df9a3a5932a2db116acc6fe23458d8f5</id>
<content type='text'>
This commit is code optimization to InternalAllocateAlignedPages of
SmmMemoryAllocationLib which can reduce free memory fragments. Also
it can reduce one pre-allocation page.

Let's take a simple example:
The expected pages size is 8KB, Alignment value is 8KB.

In original InternalAllocateAlignedPages(), the first step is to
allocate 4 pages and then find the first 8KB-aligned address in
allocated 4 pages. If the upper limit address of allocated 4 pages
is already 8KB aligned, then the allocated 4 pages contains two
8KB-aligned 8KB ranges. The lower 2 pages will be selected and
removed from free pages. Then the higher 2 pages will be free.
Since the whole memory allocation is from high address to low
address, then the higher 2 pages cann't be merged with other free
pages, causing the free memory fragments.

However, when only allocate 3(2+2-1) pages, we can avoid the free
memory fragments in specific case. Also 3 pages must contain a
8KB-aligned 8KB range, which meets the requirement. If the upper
limit address of allocated 3 pages is 8KB-aligned, then the higher
2 pages range of allocated 3 pages is 8KB-aligned and will be
selected and removed from free pages. The remaining lower one page
of allocated 3 pages will be free and merged with left lower free
memory. This can reduce free memory fragments in smm.

Signed-off-by: Dun Tan &lt;dun.tan@intel.com&gt;
Cc: Ray Ni &lt;ray.ni@intel.com&gt;
Reviewed-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Cc: Zhiguang Liu &lt;zhiguang.liu@intel.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: Apply uncrustify changes</title>
<updated>2021-12-07T17:24:28+00:00</updated>
<author>
<name>Michael Kubacki</name>
<email>michael.kubacki@microsoft.com</email>
</author>
<published>2021-12-05T22:54:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=2f88bd3a1296c522317f1c21377876de63de5be7'/>
<id>urn:sha1:2f88bd3a1296c522317f1c21377876de63de5be7</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the MdePkg package

Cc: Andrew Fish &lt;afish@apple.com&gt;
Cc: Leif Lindholm &lt;leif@nuviainc.com&gt;
Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Signed-off-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
Reviewed-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
</content>
</entry>
<entry>
<title>MdePkg: Replace BSD License with BSD+Patent License</title>
<updated>2019-04-09T17:58:13+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2019-04-03T23:06:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=9344f0921518309295da89c221d10cbead8531aa'/>
<id>urn:sha1:9344f0921518309295da89c221d10cbead8531aa</id>
<content type='text'>
https://bugzilla.tianocore.org/show_bug.cgi?id=1373

Replace BSD 2-Clause License with BSD+Patent License.  This change is
based on the following emails:

  https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html
  https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html

RFCs with detailed process for the license change:

  V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html
  V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html
  V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: Clean up source files</title>
<updated>2018-06-28T03:19:47+00:00</updated>
<author>
<name>Liming Gao</name>
<email>liming.gao@intel.com</email>
</author>
<published>2018-06-27T13:11:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=9095d37b8fe5bfc3d02adad6ba7fd7359ebc0107'/>
<id>urn:sha1:9095d37b8fe5bfc3d02adad6ba7fd7359ebc0107</id>
<content type='text'>
1. Do not use tab characters
2. No trailing white space in one line
3. All files must end with CRLF

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: Refine casting expression result to bigger size</title>
<updated>2017-03-06T06:18:45+00:00</updated>
<author>
<name>Hao Wu</name>
<email>hao.a.wu@intel.com</email>
</author>
<published>2017-01-18T08:22:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=95ba3d92dca2616715e2af89d2bbeca9577a3e2c'/>
<id>urn:sha1:95ba3d92dca2616715e2af89d2bbeca9577a3e2c</id>
<content type='text'>
There are cases that the operands of an expression are all with rank less
than UINT64/INT64 and the result of the expression is explicitly cast to
UINT64/INT64 to fit the target size.

An example will be:
UINT32 a,b;
// a and b can be any unsigned int type with rank less than UINT64, like
// UINT8, UINT16, etc.
UINT64 c;
c = (UINT64) (a + b);

Some static code checkers may warn that the expression result might
overflow within the rank of "int" (integer promotions) and the result is
then cast to a bigger size.

The commit refines codes by the following rules:
1). When the expression is possible to overflow the range of unsigned int/
int:
c = (UINT64)a + b;

2). When the expression will not overflow within the rank of "int", remove
the explicit type casts:
c = a + b;

3). When the expression will be cast to pointer of possible greater size:
UINT32 a,b;
VOID *c;
c = (VOID *)(UINTN)(a + b); --&gt; c = (VOID *)((UINTN)a + b);

4). When one side of a comparison expression contains only operands with
rank less than UINT32:
UINT8 a;
UINT16 b;
UINTN c;
if ((UINTN)(a + b) &gt; c) {...} --&gt; if (((UINT32)a + b) &gt; c) {...}

For rule 4), if we remove the 'UINTN' type cast like:
if (a + b &gt; c) {...}
The VS compiler will complain with warning C4018 (signed/unsigned
mismatch, level 3 warning) due to promoting 'a + b' to type 'int'.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu &lt;hao.a.wu@intel.com&gt;
Reviewed-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: Fix typos in comments</title>
<updated>2016-10-21T08:40:51+00:00</updated>
<author>
<name>Gary Lin</name>
<email>glin@suse.com</email>
</author>
<published>2016-10-19T07:01:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=a750b4ae24ce072f7c5ced1b89c18f9cc23debc8'/>
<id>urn:sha1:a750b4ae24ce072f7c5ced1b89c18f9cc23debc8</id>
<content type='text'>
- Resuts -&gt; Results
- outputed -&gt; outputted
- specifiecd -&gt; specified
- TURE -&gt; TRUE
- specifed -&gt; specified
- Pointion -&gt; Position
- Arrary -&gt; Array
- elasped -&gt; elapsed
- paramter -&gt; parameter
- Sumbit -&gt; Submit

Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gary Lin &lt;glin@suse.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: Enhance the comments for SmmMemoryAllocationLib instance.</title>
<updated>2015-06-19T01:56:15+00:00</updated>
<author>
<name>Qiu Shumin</name>
<email>shumin.qiu@intel.com</email>
</author>
<published>2015-06-19T01:56:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=25d7db8cc4b04d6dd1d95129550c977ed0a8ed3c'/>
<id>urn:sha1:25d7db8cc4b04d6dd1d95129550c977ed0a8ed3c</id>
<content type='text'>
Per PI spec all allocation of SMRAM should use EfiRuntimeServicesCode or EfiRuntimeServicesData. 
So SMM instance use EfiRuntimeServicesCode as the default memory allocation type instead of EfiBootServicesData. 
This patch clarify this usage in comments.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin &lt;shumin.qiu@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17666 6f19259b-4bc3-4df7-8a09-765794883524
</content>
</entry>
<entry>
<title>MdePkg:Fix typo 'caculate' in MdePkg.</title>
<updated>2015-03-17T02:58:42+00:00</updated>
<author>
<name>Qiu Shumin</name>
<email>shumin.qiu@intel.com</email>
</author>
<published>2015-03-17T02:58:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=4f953ed72109eeb87cbb11bd534c069f31e8b344'/>
<id>urn:sha1:4f953ed72109eeb87cbb11bd534c069f31e8b344</id>
<content type='text'>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin &lt;shumin.qiu@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
Reviewed-by: Bruce Cran &lt;bruce.cran@gmail.com&gt;



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17057 6f19259b-4bc3-4df7-8a09-765794883524
</content>
</entry>
<entry>
<title>Update MemoryAllocationLib.AllocateAlignedPages API comments for memory overflow ASSERT case.</title>
<updated>2013-12-31T07:19:09+00:00</updated>
<author>
<name>Liming Gao</name>
<email>liming.gao@intel.com</email>
</author>
<published>2013-12-31T07:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=1346352d5210661c92ae4343c9a69d9aa3b730e1'/>
<id>urn:sha1:1346352d5210661c92ae4343c9a69d9aa3b730e1</id>
<content type='text'>
Signed-off-by: Liming Gao &lt;liming.gao@intel.com&gt;
Reviewed-by: Star Zeng &lt;star.zeng@intel.com&gt;


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15033 6f19259b-4bc3-4df7-8a09-765794883524
</content>
</entry>
<entry>
<title>Enhance SmmMemoryAllocationLib Free function implementation to call gSmst or gBS Free service according to the buffer in or out of SMRAM range. </title>
<updated>2010-07-28T01:07:43+00:00</updated>
<author>
<name>lgao4</name>
<email>lgao4@6f19259b-4bc3-4df7-8a09-765794883524</email>
</author>
<published>2010-07-28T01:07:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=1d733f731f968622910544b6794a8b8a2c864fed'/>
<id>urn:sha1:1d733f731f968622910544b6794a8b8a2c864fed</id>
<content type='text'>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10700 6f19259b-4bc3-4df7-8a09-765794883524
</content>
</entry>
</feed>
