<feed xmlns='http://www.w3.org/2005/Atom'>
<title>uefi/tianocore/edk2.git/PcAtChipsetPkg, branch master</title>
<subtitle>EDK II</subtitle>
<id>https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/atom?h=master</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/'/>
<updated>2026-02-23T21:01:28+00:00</updated>
<entry>
<title>PcAtChipsetPkg: Replace include guards with #pragma once</title>
<updated>2026-02-23T21:01:28+00:00</updated>
<author>
<name>Michael Kubacki</name>
<email>michael.kubacki@microsoft.com</email>
</author>
<published>2026-02-03T19:13:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=73be8b8b49642c67e8c969f6d2002a0b61242e8e'/>
<id>urn:sha1:73be8b8b49642c67e8c969f6d2002a0b61242e8e</id>
<content type='text'>
Replace traditional `#ifndef`/`#define`/`#endif` include guards with
`#pragma` once.

`#pragma once` is a widely supported preprocessor directive that
prevents header files from being included multiple times. It is
supported by all toolchains used to build edk2: GCC, Clang/LLVM, and
MSVC.

Compared to macro-based include guards, `#pragma once`:

- Eliminates the risk of macro name collisions or copy/paste errors
  where two headers inadvertently use the same guard macro.
- Eliminate inconsistency in the way include guard macros are named
  (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.).
- Reduces boilerplate (three lines replaced by one).
- Avoids polluting the macro namespace with guard symbols.
- Can improve build times as the preprocessor can skip re-opening the
  file entirely, rather than re-reading it to find the matching
  `#endif` ("multiple-include optimization").
  - Note that some compilers may already optimize traditional include
    guards, by recognzining the idiomatic pattern.

This change is made acknowledging that overall portability of the
code will technically be reduced, as `#pragma once` is not part of the
C/C++ standards.

However, this is considered acceptable given:

1. edk2 already defines a subset of supported compilers in
   BaseTools/Conf/tools_def.template, all of which have supported
   `#pragma once` for over two decades.
2. There have been concerns raised to the project about inconsistent
   include guard naming and potential macro collisions.

Approximate compiler support dates:

- MSVC: Supported since Visual C++ 4.2 (1996)
- GCC: Supported since 3.4 (2004)
  (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html)
- Clang (LLVM based): Since initial release in 2007

Signed-off-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
</content>
</entry>
<entry>
<title>MdePkg: MdeLibs.dsc.inc: Apply StackCheckLibNull to All Module Types</title>
<updated>2024-11-13T21:01:46+00:00</updated>
<author>
<name>Oliver Smith-Denny</name>
<email>osde@microsoft.com</email>
</author>
<published>2024-10-27T16:35:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=ef4f3aa3f7e3c28c7f0e1a3c35711f1a85becd71'/>
<id>urn:sha1:ef4f3aa3f7e3c28c7f0e1a3c35711f1a85becd71</id>
<content type='text'>
Now that the ResetVectors are USER_DEFINED modules, they will not
be linked against StackCheckLibNull, which were the only modules
causing issues. So, we can now remove the kludge we had before
and the requirement for every DSC to include StackCheckLibNull
for SEC modules and just apply StackCheckLibNull globally.

This also changes every DSC to drop the SEC definition of
StackCheckLibNull.

Continuous-integration-options: PatchCheck.ignore-multi-package

Signed-off-by: Oliver Smith-Denny &lt;osde@linux.microsoft.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg: Write RTC time in PcRtcInit() only when it is needed</title>
<updated>2024-11-13T09:05:56+00:00</updated>
<author>
<name>Chen Lin Z</name>
<email>lin.z.chen@intel.com</email>
</author>
<published>2024-10-31T04:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=2839fed575f0eccae7f5a89f7252487dd058b462'/>
<id>urn:sha1:2839fed575f0eccae7f5a89f7252487dd058b462</id>
<content type='text'>
In PcRtcInit(), it always read RTC time and then write it back. It could
potentially cause two issues:
1) There is time gap between read RTC and write RTC, writing RTC time on
every boot could cause RTC time drift after many reboot cycles

2) Writing RTC registers on every boot could cause some unnecessary delay,
slightly impact the boot performance.

The change is only writing RTC time when 1) the current RTC time is not
valid or 2) the RegisterB value is changed.

Signed-off-by: Chen Lin Z &lt;lin.z.chen@intel.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg: Use DV bit to stop the RTC first when changing the time</title>
<updated>2024-11-13T09:05:56+00:00</updated>
<author>
<name>Chen Lin Z</name>
<email>lin.z.chen@intel.com</email>
</author>
<published>2024-10-15T05:51:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=df6b43f61b074a9c8c09471b586561ca35370408'/>
<id>urn:sha1:df6b43f61b074a9c8c09471b586561ca35370408</id>
<content type='text'>
Legacy BIOS design sets only the Update Cycle Inhibit (SET) bit when
changing the RTC time. Update Cycle Inhibit Bit may not be supported
by the backend device (Common I2C RTC device). It could add Division
Chain Select (DV) bit to stop the RTC first (Write to 0x07), Changing
the RTC time and then Set the DV bit back.

Signed-off-by: Di Zhang &lt;di.zhang@intel.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg: Add StackCheckLib</title>
<updated>2024-09-13T03:58:46+00:00</updated>
<author>
<name>Oliver Smith-Denny</name>
<email>osde@linux.microsoft.com</email>
</author>
<published>2024-07-29T23:55:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=a275f1018607e5571384b756f92dbdae3cf84c83'/>
<id>urn:sha1:a275f1018607e5571384b756f92dbdae3cf84c83</id>
<content type='text'>
Add Null implementation of StackCheckLib.

Signed-off-by: Oliver Smith-Denny &lt;osde@linux.microsoft.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg/PcAtChipsetPkg.ci.yaml: Add PrEval CI config</title>
<updated>2024-09-02T23:20:35+00:00</updated>
<author>
<name>Joey Vagedes</name>
<email>joey.vagedes@gmail.com</email>
</author>
<published>2024-08-19T15:33:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=89bad0726c870067ad2f3dd7cdb562244d3b13f7'/>
<id>urn:sha1:89bad0726c870067ad2f3dd7cdb562244d3b13f7</id>
<content type='text'>
Adds an entry to the package's CI configuration file that enable policy
5 for stuart_pr_eval. With this Policy, all INFs used by the package are
extracted from the provided DSC file and compared against the list of
changed *.inf (INF) files in the PR. If there is a match, stuart_pr_eval
will specify that this package is affected by the PR and needs to be
tested.

Signed-off-by: Joey Vagedes &lt;joey.vagedes@gmail.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg/HpetTimerDxe: Fix nested interrupt time accuracy</title>
<updated>2024-01-29T19:17:00+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2024-01-26T07:31:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=a6013625a3d7d949571fdc2cc4fc5905f37a0023'/>
<id>urn:sha1:a6013625a3d7d949571fdc2cc4fc5905f37a0023</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4659

When HPET timer is used as the timer interrupt and nested
interrupts into the HPET timer interrupt handler occur, the
elapsed time passed into the DXE Core is sometime too large
and this causes the DXE Core internal system time to run too
fast. Fix the logic so the previous main counter value stored
in the module global variable mPreviousMainCounter is always
captured before the timer notification function is called.

Without this change, mPreviousMainCounter is updated after
the timer notification function is called and when nesting
occurs, it updates with the value from the first level of
nesting which is further back in time than the interrupt from
the deepest level of nesting.  This causes the next two timer
interrupts to compute a TimerPeriod that is twice the actual
time period since the last interrupt and this causes the DXE
Core internal time to run faster than expected.

Cc: Ray Ni &lt;ray.ni@intel.com&gt;
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Ray Ni &lt;ray.ni@intel.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg: Fix AcpiTimerLib incompatibility with XhciDxe</title>
<updated>2023-12-06T22:45:20+00:00</updated>
<author>
<name>Nate DeSimone</name>
<email>nathaniel.l.desimone@intel.com</email>
</author>
<published>2023-12-01T01:33:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=df2ec2aab0876d34025968030d1f26ad8e5106ec'/>
<id>urn:sha1:df2ec2aab0876d34025968030d1f26ad8e5106ec</id>
<content type='text'>
The DXE &amp; MM standalone variant of AcpiTimerLib defines a global
named mPerformanceCounterFrequency. A global with an identical
name is also present in MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c

Since XhciDxe has a dependency on TimerLib, this can cause link
errors due to the same symbol being defined twice if the platform
DSC chooses to use AcpiTimerLib as the TimerLib implementation for
any given platform.

To resolve this, I have changed made the definition of
mPerformanceCounterFrequency to static and renamed it to
mAcpiTimerLibTscFrequency. Since this variable is not used outside
of the DxeStandaloneMmAcpiTimerLib.c compilation unit, there is no
reason to have it exported as a global.

Reviewed-by: Ray Ni &lt;ray.ni@intel.com&gt;
Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Signed-off-by: Nate DeSimone &lt;nathaniel.l.desimone@intel.com&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe: rename LibRtcVirtualNotifyEvent</title>
<updated>2023-10-18T16:15:41+00:00</updated>
<author>
<name>Laszlo Ersek</name>
<email>lersek@redhat.com</email>
</author>
<published>2023-10-12T09:10:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=c62fb455491bc029ca225e61702a7259c4ec324a'/>
<id>urn:sha1:c62fb455491bc029ca225e61702a7259c4ec324a</id>
<content type='text'>
PcatRealTimeClockRuntimeDxe seems to have copied the interface name
LibRtcVirtualNotifyEvent() from EmbeddedPkg's RealTimeClockLib class.
That's not right, for two reasons:

- PcatRealTimeClockRuntimeDxe doesn't consume "EmbeddedPkg.dec" in the
  first place,

- in EmbeddedPkg, the RealTimeClockLib class API
  LibRtcVirtualNotifyEvent() is about to be eliminated (it's a bogus API).

Rename the LibRtcVirtualNotifyEvent() function to VirtualNotifyEvent(),
and make it static.

Tested with booting OVMF.

Cc: Ray Ni &lt;ray.ni@intel.com&gt;
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4564
Signed-off-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Message-Id: &lt;20231012091057.108728-2-lersek@redhat.com&gt;
Reviewed-by: Sami Mujawar &lt;sami.mujawar@arm.com&gt;
Tested-by: Sami Mujawar &lt;sami.mujawar@arm.com&gt;
Reviewed-by: Ard Biesheuvel &lt;ardb@kernel.org&gt;
</content>
</entry>
<entry>
<title>PcAtChipsetPkg: RTC Runtime unable to get correct IO port by PCD</title>
<updated>2023-05-29T02:34:35+00:00</updated>
<author>
<name>Gua Guo</name>
<email>gua.guo@intel.com</email>
</author>
<published>2023-05-22T02:07:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/bootloaders/uefi/tianocore/edk2.git/commit/?id=ba2300f97b1947d4ae927cee05f76791c417d707'/>
<id>urn:sha1:ba2300f97b1947d4ae927cee05f76791c417d707</id>
<content type='text'>
RTC runtime is unable to get dynamic PCD value after booting to
OS using runtime services.

Resolution: Cache the dynamic PCD value in RTC driver entry point

Cc: Ray Ni &lt;ray.ni@intel.com&gt;
Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Signed-off-by: Gua Guo &lt;gua.guo@intel.com&gt;
Reviewed-by: Ray Ni &lt;ray.ni@intel.com&gt;
</content>
</entry>
</feed>
