<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jul 31, 2019, at 9:34 AM, Brian J. Johnson <<a href="mailto:brian.johnson@hpe.com" class="">brian.johnson@hpe.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 7/31/19 7:43 AM, Laszlo Ersek wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">(adding Mike)<br class="">On 07/31/19 09:35, Eric Dong wrote:<br class=""><blockquote type="cite" class="">REF: <a href="https://bugzilla.tianocore.org/show_bug.cgi?id=1984" class="">https://bugzilla.tianocore.org/show_bug.cgi?id=1984</a><br class=""><br class="">Current debug message brings much restriction for the platform<br class="">which use this driver.<br class=""><br class="">For PEI and DXE phase, platform mush link base DebugLib (without<br class="">using any pei/dxe services, even for its dependent libraries).<br class=""><br class="">This patch default disable this debug message, only open it when<br class="">need to debug the related code.<br class=""><br class="">Signed-off-by: Eric Dong <<a href="mailto:eric.dong@intel.com" class="">eric.dong@intel.com</a>><br class="">Cc: Ray Ni <<a href="mailto:ray.ni@intel.com" class="">ray.ni@intel.com</a>><br class="">Cc: Laszlo Ersek <<a href="mailto:lersek@redhat.com" class="">lersek@redhat.com</a>><br class=""><br class="">Eric Dong (2):<br class="">  UefiCpuPkg/RegisterCpuFeaturesLib: Default avoid print.<br class="">  UefiCpuPkg/PiSmmCpuDxeSmm: Default avoid print.<br class=""><br class=""> .../Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c    | 4 +++-<br class=""> UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c                             | 4 +++-<br class=""> 2 files changed, 6 insertions(+), 2 deletions(-)<br class=""><br class=""></blockquote>The basic problem seems to be that APs should not use "thick" services<br class="">that might underlie the DebugLib instance that is picked by the<br class="">platform. That requirement appears sane to me.<br class="">I think I disagree with the proposed mitigation though. Reasons:<br class="">(a) The mitigation is duplicated to independent modules.<br class="">(b) It is not possible to change the debug mask without modifying C<br class="">language source code.<br class="">(c) Passing a zero log mask to DEBUG() on the APs does not guarantee<br class="">thread safety:<br class="">- The DEBUG() macro calls DebugPrintEnabled() regardless of the log mask<br class="">passed to DEBUG().<br class="">- The DEBUG() macro may or may not call DebugPrintLevelEnabled(),<br class="">dependent on architecture & toolchain.<br class="">- Both DebugPrintEnabled() and DebugPrintLevelEnabled() are DebugLib<br class="">interfaces. The library instance may implement them unsafely for APs,<br class="">and a zero log mask at the DEBUG call site could not prevent that.<br class="">- Finally, DebugPrint() itself could invoke thread-unsafe logic, before<br class="">consulting the log mask.<br class="">I would propose the following, instead:<br class="">(i) Introduce BIT6 for PcdDebugPropertyMask in "MdePkg.dec". The default<br class="">value should be zero. The bit stands for "DEBUG is safe to call on APs".<br class="">(ii) Add a macro called AP_DEBUG to <DebugLib.h>.<br class="">This macro should work the same as DEBUG, except it should do nothing if<br class="">BIT6 in PcdDebugProperyMask is clear.<br class="">Fetching PcdDebugPropertyMask inside AP_DEBUG() is safe, because:<br class="">- the PCD can only be fixed-at-build or patchable-in-module (therefore<br class="">it is safe to read on APs -- no PCD PPI or PCD Protocol is needed);<br class="">- PcdDebugPropertyMask is a preexistent PCD that *all* existent DebugLib<br class="">instances are expected to consume -- per the API specifications in<br class=""><DebugLib.h> --, therefore no new PCD dependency would be introduced to<br class="">DebugLib instances.<br class="">(iii) Modules that call DEBUG on APs should replace those calls with<br class="">AP_DEBUG. Code that currently calls DEBUG while running on either BSP or<br class="">APs should discriminate those cases from each other, and use AP_DEBUG<br class="">explicitly, when it runs on APs.<br class="">As a further refinement, a macro called MP_DEBUG could be introduced<br class="">too, with a new initial parameter called "Bsp". If the Bsp parameter is<br class="">TRUE, then MP_DEBUG is identical to DEBUG. Otherwise, MP_DEBUG is<br class="">identical to AP_DEBUG. This way, DEBUG() calls such as described above<br class="">wouldn't have to be split into DEBUG / AP_DEBUG calls; they could be<br class="">changed into MP_DEBUG calls (with an extra parameter in the front).<br class="">(iv) platforms can set BIT6 in PcdDebugPropertyMask in DSC files. This<br class="">need not be a full platform-level setting: the PCD can be overridden in<br class="">module scope, just like the DebugLib resolution can be module-scoped.<br class="">As an end result, AP_DEBUG messages will disappear by default (safely),<br class="">and platforms will have to do extra work only if they want AP_DEBUG<br class="">messages to appear. Otherwise the change is transparent to platforms.<br class="">And, I think that AP_DEBUG belongs in MdePkg (and not UefiCpuPkg)<br class="">because both DebugLib and EFI_MP_SERVICES_PROTOCOL are declared in<br class="">MdePkg. While UefiCpuPkg provides the multiprocessing implementation for<br class="">IA32 and X64, the problem is architecture-independent. Furthermore, the<br class="">problem is a long-standing and recurrent one -- please refer to commit<br class="">81f560498bf1, for example --, so it makes sense to solve it once and for<br class="">all.<br class="">Thanks<br class="">Laszlo<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Laszlo,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Defining a PCD bit for DEBUG() AP safety is an excellent suggestion.  As you said, this is a long-standing, recurrent problem which keeps biting real platforms, and it would be good to have a solid, platform-independent solution.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I do wonder if there would be a clean way to let a DebugLib instance itself declare that AP_DEBUG() is safe.  That way a platform would only need to override the DebugLib instance in the DSC file, rather than both the instance and the PCD.  (I know, I'm nitpicking.)  A library can't override PCDs in its calling modules, of course.  I suppose the AP_DEBUG() macro could call a new DebugLib entry point to test for AP safety before doing anything else, say DebugPrintOnApIsSafe().  Or it could even be a global CONST BOOLEAN defined by the library.  But that would require all DebugLib instances to change, which is something you were trying to avoid.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">However, it's not always practical to track down all uses of DEBUG(). An AP can easily call a library routine which uses DEBUG() rather than AP_DEBUG(), buried under several layers of transitive library dependencies.  In other words, it's not always practical to determine ahead of time if a given DEBUG() call may be done on an AP.  I know that AP code runs in a very restricted environment and that people who use MpServices are supposed to understand the repercussions, but it gets very difficult when libraries are involved.  :(</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">So would a better solution be to modify the common unsafe DebugLib instances to have DebugPrintEnabled() return FALSE on APs?  That would probably require a new BaseLib interface to determine if the caller is running on the BSP or an AP.  (For IA32/X64 this isn't too hard -- it just needs to check a bit in the local APIC.  I have no idea about other architectures.)  That wouldn't solve the problem everywhere -- anyone using a custom DebugLib would have to update it themselves.  But it would solve it solidly in the majority of cases.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><blockquote type="cite" class=""><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Thoughts?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div><div><br class=""></div><div><div>For DXE you can use the MpServices protocol to tell if you are on the BSP or not. </div><div><br class=""></div><div><a href="https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/MpService.h" class="">https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/MpService.h</a></div><br class=""><blockquote type="cite" class=""></blockquote></div><div>EFI_MP_SERVICES_PROTOCOL.WhoAmI() gets you your ProcessorNumber. EFI_MP_SERVICES_PROTOCOL.GetProcessorInfo() returns the ProcessInfoBuffer that lets you know if you are the BSP.  You would want to grab the MpServices protocol pointer early in the driver prior to doing any work on the AP. </div><div><br class=""></div><div><table class="js-file-line-container highlight tab-size" data-tab-size="8" style="box-sizing: border-box; border-collapse: collapse; border-spacing: 0px; tab-size: 8; caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14.000000953674316px;"><tbody style="box-sizing: border-box;" class=""><tr style="box-sizing: border-box;" class=""><td id="L102" class="blob-num js-line-number" data-line-number="102" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC102" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: rgb(215, 58, 73);">typedef</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(215, 58, 73);">struct</span> {</td></tr><tr style="box-sizing: border-box;" class=""><td id="L103" class="blob-num js-line-number" data-line-number="103" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC103" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L104" class="blob-num js-line-number" data-line-number="104" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC104" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ The unique processor ID determined by system hardware.  For IA32 and X64,</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L105" class="blob-num js-line-number" data-line-number="105" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC105" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ the processor ID is the same as the Local APIC ID. Only the lower 8 bits</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L106" class="blob-num js-line-number" data-line-number="106" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC106" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ are used, and higher bits are reserved.  For IPF, the lower 16 bits contains</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L107" class="blob-num js-line-number" data-line-number="107" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC107" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ id/eid, and higher bits are reserved.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L108" class="blob-num js-line-number" data-line-number="108" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC108" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L109" class="blob-num js-line-number" data-line-number="109" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC109" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  UINT64                     ProcessorId;</td></tr><tr style="box-sizing: border-box;" class=""><td id="L110" class="blob-num js-line-number" data-line-number="110" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC110" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L111" class="blob-num js-line-number" data-line-number="111" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC111" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ Flags indicating if the processor is BSP or AP, if the processor is enabled</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L112" class="blob-num js-line-number" data-line-number="112" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC112" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ or disabled, and if the processor is healthy. Bits 3..31 are reserved and</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L113" class="blob-num js-line-number" data-line-number="113" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC113" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ must be 0.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L114" class="blob-num js-line-number" data-line-number="114" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC114" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L115" class="blob-num js-line-number" data-line-number="115" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC115" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ <pre></span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L116" class="blob-num js-line-number" data-line-number="116" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC116" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ BSP  ENABLED  HEALTH  Description</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L117" class="blob-num js-line-number" data-line-number="117" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC117" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ ===  =======  ======  ===================================================</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L118" class="blob-num js-line-number" data-line-number="118" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC118" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  0      0       0     Unhealthy Disabled AP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L119" class="blob-num js-line-number" data-line-number="119" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC119" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  0      0       1     Healthy Disabled AP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L120" class="blob-num js-line-number" data-line-number="120" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC120" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  0      1       0     Unhealthy Enabled AP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L121" class="blob-num js-line-number" data-line-number="121" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC121" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  0      1       1     Healthy Enabled AP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L122" class="blob-num js-line-number" data-line-number="122" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC122" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  1      0       0     Invalid. The BSP can never be in the disabled state.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L123" class="blob-num js-line-number" data-line-number="123" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC123" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  1      0       1     Invalid. The BSP can never be in the disabled state.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L124" class="blob-num js-line-number" data-line-number="124" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC124" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  1      1       0     Unhealthy Enabled BSP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L125" class="blob-num js-line-number" data-line-number="125" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC125" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/  1      1       1     Healthy Enabled BSP.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L126" class="blob-num js-line-number" data-line-number="126" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC126" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ </pre></span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L127" class="blob-num js-line-number" data-line-number="127" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC127" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L128" class="blob-num js-line-number" data-line-number="128" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC128" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  UINT32                     StatusFlag;</td></tr><tr style="box-sizing: border-box;" class=""><td id="L129" class="blob-num js-line-number" data-line-number="129" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC129" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L130" class="blob-num js-line-number" data-line-number="130" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC130" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ The physical location of the processor, including the physical package number</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L131" class="blob-num js-line-number" data-line-number="131" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC131" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ that identifies the cartridge, the physical core number within package, and</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L132" class="blob-num js-line-number" data-line-number="132" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC132" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/ logical thread number within core.</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L133" class="blob-num js-line-number" data-line-number="133" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC133" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  <span class="pl-c" style="box-sizing: border-box; color: rgb(106, 115, 125);"><span class="pl-c" style="box-sizing: border-box;">//</span>/</span></td></tr><tr style="box-sizing: border-box;" class=""><td id="L134" class="blob-num js-line-number" data-line-number="134" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC134" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">  EFI_CPU_PHYSICAL_LOCATION  Location;</td></tr><tr style="box-sizing: border-box;" class=""><td id="L135" class="blob-num js-line-number" data-line-number="135" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td><td id="LC135" class="js-file-line blob-code-inner blob-code" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; position: relative; vertical-align: top; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; overflow: visible; white-space: pre; word-wrap: normal;">} EFI_PROCESSOR_INFORMATION;</td></tr><tr style="box-sizing: border-box;" class=""><td id="L136" class="blob-num js-line-number" data-line-number="136" style="box-sizing: border-box; padding: 0px 10px; -webkit-user-select: none; color: rgba(27, 31, 35, 0.298039); cursor: pointer; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; line-height: 20px; min-width: 50px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"></td></tr></tbody></table></div><div><br class=""></div><div>DebugPrinttEnabled() and DebugAssertEnabled() would be needed at a minimum as I don't think you really want to be ASSERTing on the AP, unless that is your intent. I think on a lot of platforms end up having these functions be based on FixedAtBuild PCDs and the function calls get optimized away. Thus it seems like you would want an MP safe version of a given library. </div><div><br class=""></div><div>This same problem kind of exists for Runtime drivers too. You would not want to ASSERT or DEBUG print at runtime in a Lib that was not Runtime safe. </div><div><br class=""></div><div>Thanks,</div><div><br class=""></div><div>Andrew Fish</div><br class=""><blockquote type="cite" class=""><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Brian J. Johnson</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Enterprise X86 Lab</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Hewlett Packard Enterprise</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span></div></blockquote></div><br class=""></body></html>

<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>

You receive all messages sent to this group.


<p>

<a target="_blank" href="https://edk2.groups.io/g/devel/message/44692">View/Reply Online (#44692)</a> |


  


|


  
    <a target="_blank" href="https://groups.io/mt/32664465/1813853">Mute This Topic</a>
  

| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>



<br>

<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |

<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>

 [edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>