* [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes @ 2023-04-26 0:09 Oliver Smith-Denny 2023-05-01 13:02 ` Ard Biesheuvel 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-04-26 0:09 UTC (permalink / raw) To: devel Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan When ArmPkg's CpuDxe driver initializes, it attempts to sync the GCD with the page table. However, unlike when the UefiCpuPkg's CpuDxe initializes, the Arm version does not update the GCD capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set the capabilities to be the existing page table attributes for this range, but the UefiCpuPkg CpuDxe sets the above attributes as they are software constructs, possible to set for any memory hardware). As a result, when the GCD attributes are attempted to be set against the old GCD capabilities, attributes that are set in the page table can get lost because the new attributes are not in the old GCD capabilities (and yet they are already set in the page table) meaning that the attempted sync between the GCD and the page table was a failure and drivers querying one vs the other will see different state. This can lead to RWX memory regions even with the no-execute policy set, because core drivers (such as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) allocate pages, query the GCD attributes, attempt to set a new cache attribute and end up clearing the XP bit in the page table because the GCD attributes do not have XP set. This patch follows the UefiCpuPkg pattern and adds EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe initialization. This ensures that memory regions which already have these attributes set get them set in the GCD attributes, properly syncing between the GCD and the page table. This mitigates the issue seen, however, additional investigations into setting the GCD attributes earlier and maintaining a better sync between the GCD and the page table are being done. Feedback on this proposal is greatly appreciated, particularly any pitfalls or more architectural solutions to issues seen with syncing the GCD and the page table. PR: https://github.com/tianocore/edk2/pull/4311 Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Sami Mujawar <sami.mujawar@arm.com> Cc: Michael Kubacki <mikuback@linux.microsoft.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> --- ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c index 2e73719dce04..3ef0380e084f 100644 --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( UINTN EndIndex; EFI_PHYSICAL_ADDRESS RegionStart; UINT64 RegionLength; + UINT64 Capabilities; DEBUG (( DEBUG_GCD, @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; } + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software + // constructs, not hardware features) and they are critical to maintaining a security boundary + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; + // - // Set memory attributes according to MTRR attribute and the original attribute of descriptor + // Update GCD capabilities as these may have changed in the page table since the GCD was created + // this follows the same pattern as x86 GCD and Page Table syncing // - gDS->SetMemorySpaceAttributes ( - RegionStart, - RegionLength, - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) - ); + Status = gDS->SetMemorySpaceCapabilities ( + RegionStart, + RegionLength, + Capabilities + ); + + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", + __func__, + Capabilities, + RegionStart, + RegionLength, + Status + )); + ASSERT_EFI_ERROR (Status); + continue; + } + + // + // Set memory attributes according to the page table attribute and the original attribute of descriptor + // + Status = gDS->SetMemorySpaceAttributes ( + RegionStart, + RegionLength, + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) + ); + + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", + __func__, + Attributes, + RegionStart, + RegionLength, + Status + )); + ASSERT_EFI_ERROR (Status); + continue; + } } return EFI_SUCCESS; -- 2.40.0 ^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-04-26 0:09 [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes Oliver Smith-Denny @ 2023-05-01 13:02 ` Ard Biesheuvel 2023-05-01 17:03 ` Oliver Smith-Denny 0 siblings, 1 reply; 26+ messages in thread From: Ard Biesheuvel @ 2023-05-01 13:02 UTC (permalink / raw) To: Oliver Smith-Denny Cc: devel, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On Wed, 26 Apr 2023 at 02:09, Oliver Smith-Denny <osde@linux.microsoft.com> wrote: > > When ArmPkg's CpuDxe driver initializes, it attempts to sync the > GCD with the page table. However, unlike when the UefiCpuPkg's > CpuDxe initializes, the Arm version does not update the GCD > capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set > the capabilities to be the existing page table attributes for > this range, but the UefiCpuPkg CpuDxe sets the above attributes > as they are software constructs, possible to set for any memory > hardware). > > As a result, when the GCD attributes are attempted to be set > against the old GCD capabilities, attributes that are set in the > page table can get lost because the new attributes are not in the > old GCD capabilities (and yet they are already set in the page > table) meaning that the attempted sync between the GCD and the > page table was a failure and drivers querying one vs the other > will see different state. This can lead to RWX memory regions > even with the no-execute policy set, because core drivers (such > as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) > allocate pages, query the GCD attributes, attempt to set a new > cache attribute and end up clearing the XP bit in the page table > because the GCD attributes do not have XP set. > > This patch follows the UefiCpuPkg pattern and adds > EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe > initialization. This ensures that memory regions which already have > these attributes set get them set in the GCD attributes, properly > syncing between the GCD and the page table. > > This mitigates the issue seen, however, additional investigations > into setting the GCD attributes earlier and maintaining a better > sync between the GCD and the page table are being done. > > Feedback on this proposal is greatly appreciated, particularly > any pitfalls or more architectural solutions to issues seen > with syncing the GCD and the page table. > I think this is conceptually correct. However, I've played with this in the past, and IIRC, these attributes are inherited by the EFI memory map too, and not updated when allocations are made. This means that all code and data regions will be listed as RP, RO and XP in the EFI memory map, which is going to confuse Linux at the very least, and potentially other OSes as well. Generally, the EFI and PI specs are very vague when it comes to defining whether memory region attributes apply to the memory region itself ("this memory can be mapped as read-only or non-exec") or its contents ("these pages can be mapped read-only because the code does not expect to be able to write to it"). Before we have some clarification and some rigid wording in the spec as to what these attributes actually mean for non-allocated regions vs allocated ones, I don't think we can use them like this. Alternatively, we could update the GCD core so these attributes are not inherited by the EFI memory map. Another potential concern is fragmentation: the GCD memory map has very few entries usually under the current usage model, but keeping track of all memory permission attributes is going to inflate its size substantially. Also, including EFI_MEMORY_RP only makes sense if we implement a way to apply it, which ArmCpuDxe currently does not provide. > PR: https://github.com/tianocore/edk2/pull/4311 > Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 > > Cc: Leif Lindholm <quic_llindhol@quicinc.com> > Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> > Cc: Sami Mujawar <sami.mujawar@arm.com> > Cc: Michael Kubacki <mikuback@linux.microsoft.com> > Cc: Sean Brogan <sean.brogan@microsoft.com> > > Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> > --- > ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- > 1 file changed, 49 insertions(+), 6 deletions(-) > > diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > index 2e73719dce04..3ef0380e084f 100644 > --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( > UINTN EndIndex; > EFI_PHYSICAL_ADDRESS RegionStart; > UINT64 RegionLength; > + UINT64 Capabilities; > > DEBUG (( > DEBUG_GCD, > @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( > RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; > } > > + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software > + // constructs, not hardware features) and they are critical to maintaining a security boundary > + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; > + > // > - // Set memory attributes according to MTRR attribute and the original attribute of descriptor > + // Update GCD capabilities as these may have changed in the page table since the GCD was created > + // this follows the same pattern as x86 GCD and Page Table syncing > // > - gDS->SetMemorySpaceAttributes ( > - RegionStart, > - RegionLength, > - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) > - ); > + Status = gDS->SetMemorySpaceCapabilities ( > + RegionStart, > + RegionLength, > + Capabilities > + ); > + > + if (EFI_ERROR (Status)) { > + DEBUG (( > + DEBUG_ERROR, > + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > + __func__, > + Capabilities, > + RegionStart, > + RegionLength, > + Status > + )); > + ASSERT_EFI_ERROR (Status); > + continue; > + } > + > + // > + // Set memory attributes according to the page table attribute and the original attribute of descriptor > + // > + Status = gDS->SetMemorySpaceAttributes ( > + RegionStart, > + RegionLength, > + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) > + ); > + > + if (EFI_ERROR (Status)) { > + DEBUG (( > + DEBUG_ERROR, > + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > + __func__, > + Attributes, > + RegionStart, > + RegionLength, > + Status > + )); > + ASSERT_EFI_ERROR (Status); > + continue; > + } > } > > return EFI_SUCCESS; > -- > 2.40.0 > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 13:02 ` Ard Biesheuvel @ 2023-05-01 17:03 ` Oliver Smith-Denny 2023-05-01 17:49 ` [edk2-devel] [PATCH " Michael D Kinney 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-05-01 17:03 UTC (permalink / raw) To: Ard Biesheuvel Cc: devel, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On 5/1/2023 6:02 AM, Ard Biesheuvel wrote: > On Wed, 26 Apr 2023 at 02:09, Oliver Smith-Denny > <osde@linux.microsoft.com> wrote: >> >> When ArmPkg's CpuDxe driver initializes, it attempts to sync the >> GCD with the page table. However, unlike when the UefiCpuPkg's >> CpuDxe initializes, the Arm version does not update the GCD >> capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set >> the capabilities to be the existing page table attributes for >> this range, but the UefiCpuPkg CpuDxe sets the above attributes >> as they are software constructs, possible to set for any memory >> hardware). >> >> As a result, when the GCD attributes are attempted to be set >> against the old GCD capabilities, attributes that are set in the >> page table can get lost because the new attributes are not in the >> old GCD capabilities (and yet they are already set in the page >> table) meaning that the attempted sync between the GCD and the >> page table was a failure and drivers querying one vs the other >> will see different state. This can lead to RWX memory regions >> even with the no-execute policy set, because core drivers (such >> as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) >> allocate pages, query the GCD attributes, attempt to set a new >> cache attribute and end up clearing the XP bit in the page table >> because the GCD attributes do not have XP set. >> >> This patch follows the UefiCpuPkg pattern and adds >> EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe >> initialization. This ensures that memory regions which already have >> these attributes set get them set in the GCD attributes, properly >> syncing between the GCD and the page table. >> >> This mitigates the issue seen, however, additional investigations >> into setting the GCD attributes earlier and maintaining a better >> sync between the GCD and the page table are being done. >> >> Feedback on this proposal is greatly appreciated, particularly >> any pitfalls or more architectural solutions to issues seen >> with syncing the GCD and the page table. >> > > I think this is conceptually correct. However, I've played with this > in the past, and IIRC, these attributes are inherited by the EFI > memory map too, and not updated when allocations are made. This means > that all code and data regions will be listed as RP, RO and XP in the > EFI memory map, which is going to confuse Linux at the very least, and > potentially other OSes as well. Thanks for the detailed response, I appreciate it! A clarification here: my patch follows what the x86 code does (see https://github.com/tianocore/edk2/blob/56e9828380b7425678a080bd3a08e7c741af67ba/UefiCpuPkg/CpuDxe/CpuPageTable.c#LL994C1-L1077C27), where the capabilities of each region are updated to include RP, RO, and XP. However, the attributes of each region are only updated to include these flags if the page table has the attributes set for this region. I.e. we are only allowing for the possibility of these bits to be set, but not actually setting them in the attributes unless the page table already has them set. So, at the very least, we should be matching what x86 does (so OS's should not be broken), unless the other discrepancies in the x86 and Arm memory attribute handling cause issue. The main thing my change is intended to address is the case where code that uses the GCD instead of the page table (such as the NonDiscoverablePciDeviceIo driver I mentioned) attempts to set a CPU memory attribute (such as UC) and ends up clearing the XP bit that was set in the page table, but wasn't in the GCD (because it was never properly synced with the page table). This could also be solved by going to each caller and updating it to set the GCD capabilities before it sets the GCD attributes (and perhaps they should be, already). However, this puts the burden of maintaining memory protections such as XP on each caller, instead of handling it at a core level (now, there are of course complete design changes that could make this more effective, but this was an attempt at a simple first step). My understanding is that the EFI memory map is built on demand by calls to GetMemoryMap from the page descriptor list, which is updated thoughout bootservices, i.e. that it isn't pulling from the GCD. I will go back and trace through this logic again. > > Generally, the EFI and PI specs are very vague when it comes to > defining whether memory region attributes apply to the memory region > itself ("this memory can be mapped as read-only or non-exec") or its > contents ("these pages can be mapped read-only because the code does > not expect to be able to write to it"). > > Before we have some clarification and some rigid wording in the spec > as to what these attributes actually mean for non-allocated regions vs > allocated ones, I don't think we can use them like this. > Alternatively, we could update the GCD core so these attributes are > not inherited by the EFI memory map. > > Another potential concern is fragmentation: the GCD memory map has > very few entries usually under the current usage model, but keeping > track of all memory permission attributes is going to inflate its size > substantially. I think this should not change the size of the GCD, right? It is not tracking any more regions than it already was. It simply is updating the capabilities of each region it was already tracking (and possibly the attributes if the page table had RO, RP, or XP set). I agree that not tracking each range of memory is critical, we have seen issues when non-existent memory was getting tracked. > > Also, including EFI_MEMORY_RP only makes sense if we implement a way > to apply it, which ArmCpuDxe currently does not provide. Thanks for pointing this out, I hadn't traced and seen that RP is not implemented. If this moves forward, I can drop it (and with a comment why it is different). > > >> PR: https://github.com/tianocore/edk2/pull/4311 >> Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 >> >> Cc: Leif Lindholm <quic_llindhol@quicinc.com> >> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> >> Cc: Sami Mujawar <sami.mujawar@arm.com> >> Cc: Michael Kubacki <mikuback@linux.microsoft.com> >> Cc: Sean Brogan <sean.brogan@microsoft.com> >> >> Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> >> --- >> ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- >> 1 file changed, 49 insertions(+), 6 deletions(-) >> >> diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >> index 2e73719dce04..3ef0380e084f 100644 >> --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >> +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >> @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( >> UINTN EndIndex; >> EFI_PHYSICAL_ADDRESS RegionStart; >> UINT64 RegionLength; >> + UINT64 Capabilities; >> >> DEBUG (( >> DEBUG_GCD, >> @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( >> RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; >> } >> >> + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software >> + // constructs, not hardware features) and they are critical to maintaining a security boundary >> + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; >> + >> // >> - // Set memory attributes according to MTRR attribute and the original attribute of descriptor >> + // Update GCD capabilities as these may have changed in the page table since the GCD was created >> + // this follows the same pattern as x86 GCD and Page Table syncing >> // >> - gDS->SetMemorySpaceAttributes ( >> - RegionStart, >> - RegionLength, >> - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) >> - ); >> + Status = gDS->SetMemorySpaceCapabilities ( >> + RegionStart, >> + RegionLength, >> + Capabilities >> + ); >> + >> + if (EFI_ERROR (Status)) { >> + DEBUG (( >> + DEBUG_ERROR, >> + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", >> + __func__, >> + Capabilities, >> + RegionStart, >> + RegionLength, >> + Status >> + )); >> + ASSERT_EFI_ERROR (Status); >> + continue; >> + } >> + >> + // >> + // Set memory attributes according to the page table attribute and the original attribute of descriptor >> + // >> + Status = gDS->SetMemorySpaceAttributes ( >> + RegionStart, >> + RegionLength, >> + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) >> + ); >> + >> + if (EFI_ERROR (Status)) { >> + DEBUG (( >> + DEBUG_ERROR, >> + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", >> + __func__, >> + Attributes, >> + RegionStart, >> + RegionLength, >> + Status >> + )); >> + ASSERT_EFI_ERROR (Status); >> + continue; >> + } >> } >> >> return EFI_SUCCESS; >> -- >> 2.40.0 >> ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 17:03 ` Oliver Smith-Denny @ 2023-05-01 17:49 ` Michael D Kinney 2023-05-01 17:50 ` Ard Biesheuvel 0 siblings, 1 reply; 26+ messages in thread From: Michael D Kinney @ 2023-05-01 17:49 UTC (permalink / raw) To: devel@edk2.groups.io, osde@linux.microsoft.com, Ard Biesheuvel, Ni, Ray Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan, Kinney, Michael D Hi, These UEFI Memory Map, GCD, and Page Table interactions can be complex and I agree there are some UEFI/PI spec clarifications that may help. Ray hosts a TianoCore design meeting when needed. Do you think a meeting with an open discussion on these topics would help, or do we prefer to continue with email discussions? Thanks, Mike > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Oliver > Smith-Denny > Sent: Monday, May 1, 2023 10:04 AM > To: Ard Biesheuvel <ardb@kernel.org> > Cc: devel@edk2.groups.io; Leif Lindholm <quic_llindhol@quicinc.com>; Ard > Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > <sami.mujawar@arm.com>; Michael Kubacki > <mikuback@linux.microsoft.com>; Sean Brogan > <sean.brogan@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities With Page Table Attributes > > On 5/1/2023 6:02 AM, Ard Biesheuvel wrote: > > On Wed, 26 Apr 2023 at 02:09, Oliver Smith-Denny > > <osde@linux.microsoft.com> wrote: > >> > >> When ArmPkg's CpuDxe driver initializes, it attempts to sync the > >> GCD with the page table. However, unlike when the UefiCpuPkg's > >> CpuDxe initializes, the Arm version does not update the GCD > >> capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set > >> the capabilities to be the existing page table attributes for > >> this range, but the UefiCpuPkg CpuDxe sets the above attributes > >> as they are software constructs, possible to set for any memory > >> hardware). > >> > >> As a result, when the GCD attributes are attempted to be set > >> against the old GCD capabilities, attributes that are set in the > >> page table can get lost because the new attributes are not in the > >> old GCD capabilities (and yet they are already set in the page > >> table) meaning that the attempted sync between the GCD and the > >> page table was a failure and drivers querying one vs the other > >> will see different state. This can lead to RWX memory regions > >> even with the no-execute policy set, because core drivers (such > >> as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) > >> allocate pages, query the GCD attributes, attempt to set a new > >> cache attribute and end up clearing the XP bit in the page table > >> because the GCD attributes do not have XP set. > >> > >> This patch follows the UefiCpuPkg pattern and adds > >> EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe > >> initialization. This ensures that memory regions which already have > >> these attributes set get them set in the GCD attributes, properly > >> syncing between the GCD and the page table. > >> > >> This mitigates the issue seen, however, additional investigations > >> into setting the GCD attributes earlier and maintaining a better > >> sync between the GCD and the page table are being done. > >> > >> Feedback on this proposal is greatly appreciated, particularly > >> any pitfalls or more architectural solutions to issues seen > >> with syncing the GCD and the page table. > >> > > > > I think this is conceptually correct. However, I've played with this > > in the past, and IIRC, these attributes are inherited by the EFI > > memory map too, and not updated when allocations are made. This means > > that all code and data regions will be listed as RP, RO and XP in the > > EFI memory map, which is going to confuse Linux at the very least, and > > potentially other OSes as well. > > Thanks for the detailed response, I appreciate it! > A clarification here: my patch follows what the x86 code does (see > https://github.com/tianocore/edk2/blob/56e9828380b7425678a080bd3a08e > 7c741af67ba/UefiCpuPkg/CpuDxe/CpuPageTable.c#LL994C1-L1077C27), > where the capabilities of each region are updated to include RP, RO, and > XP. However, the attributes of each region are only updated to include > these flags if the page table has the attributes set for this region. > I.e. we are only allowing for the possibility of these bits to be > set, but not actually setting them in the attributes unless the page > table already has them set. So, at the very least, we should be > matching what x86 does (so OS's should not be broken), unless > the other discrepancies in the x86 and Arm memory attribute handling > cause issue. > > The main thing my change is intended to address is the case where > code that uses the GCD instead of the page table (such as the > NonDiscoverablePciDeviceIo driver I mentioned) attempts to set > a CPU memory attribute (such as UC) and ends up clearing the XP bit > that was set in the page table, but wasn't in the GCD (because it was > never properly synced with the page table). This could also be solved > by going to each caller and updating it to set the GCD capabilities > before it sets the GCD attributes (and perhaps they should be, already). > However, this puts the burden of maintaining memory protections such > as XP on each caller, instead of handling it at a core level (now, > there are of course complete design changes that could make this more > effective, but this was an attempt at a simple first step). > > My understanding is that the EFI memory map is built on demand by calls > to GetMemoryMap from the page descriptor list, which is updated > thoughout bootservices, i.e. that it isn't pulling from the GCD. I will > go back and trace through this logic again. > > > > > Generally, the EFI and PI specs are very vague when it comes to > > defining whether memory region attributes apply to the memory region > > itself ("this memory can be mapped as read-only or non-exec") or its > > contents ("these pages can be mapped read-only because the code does > > not expect to be able to write to it"). > > > > Before we have some clarification and some rigid wording in the spec > > as to what these attributes actually mean for non-allocated regions vs > > allocated ones, I don't think we can use them like this. > > Alternatively, we could update the GCD core so these attributes are > > not inherited by the EFI memory map. > > > > Another potential concern is fragmentation: the GCD memory map has > > very few entries usually under the current usage model, but keeping > > track of all memory permission attributes is going to inflate its size > > substantially. > > I think this should not change the size of the GCD, right? It is not > tracking any more regions than it already was. It simply is updating > the capabilities of each region it was already tracking (and possibly > the attributes if the page table had RO, RP, or XP set). I agree that > not tracking each range of memory is critical, we have seen issues when > non-existent memory was getting tracked. > > > > > Also, including EFI_MEMORY_RP only makes sense if we implement a way > > to apply it, which ArmCpuDxe currently does not provide. > > Thanks for pointing this out, I hadn't traced and seen that RP is not > implemented. If this moves forward, I can drop it (and with a comment > why it is different). > > > > > > >> PR: https://github.com/tianocore/edk2/pull/4311 > >> Personal branch: https://github.com/os- > d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 > >> > >> Cc: Leif Lindholm <quic_llindhol@quicinc.com> > >> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> > >> Cc: Sami Mujawar <sami.mujawar@arm.com> > >> Cc: Michael Kubacki <mikuback@linux.microsoft.com> > >> Cc: Sean Brogan <sean.brogan@microsoft.com> > >> > >> Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> > >> --- > >> ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 > +++++++++++++++++--- > >> 1 file changed, 49 insertions(+), 6 deletions(-) > >> > >> diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > >> index 2e73719dce04..3ef0380e084f 100644 > >> --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > >> +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > >> @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( > >> UINTN EndIndex; > >> EFI_PHYSICAL_ADDRESS RegionStart; > >> UINT64 RegionLength; > >> + UINT64 Capabilities; > >> > >> DEBUG (( > >> DEBUG_GCD, > >> @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( > >> RegionLength = MemorySpaceMap[Index].BaseAddress + > MemorySpaceMap[Index].Length - RegionStart; > >> } > >> > >> + // Always add RO, RP, and XP as all memory is capable of supporting > these types (they are software > >> + // constructs, not hardware features) and they are critical to > maintaining a security boundary > >> + Capabilities = MemorySpaceMap[Index].Capabilities | > EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; > >> + > >> // > >> - // Set memory attributes according to MTRR attribute and the original > attribute of descriptor > >> + // Update GCD capabilities as these may have changed in the page > table since the GCD was created > >> + // this follows the same pattern as x86 GCD and Page Table syncing > >> // > >> - gDS->SetMemorySpaceAttributes ( > >> - RegionStart, > >> - RegionLength, > >> - (MemorySpaceMap[Index].Attributes & > ~EFI_MEMORY_CACHETYPE_MASK) | > (MemorySpaceMap[Index].Capabilities & Attributes) > >> - ); > >> + Status = gDS->SetMemorySpaceCapabilities ( > >> + RegionStart, > >> + RegionLength, > >> + Capabilities > >> + ); > >> + > >> + if (EFI_ERROR (Status)) { > >> + DEBUG (( > >> + DEBUG_ERROR, > >> + "%a - failed to update GCD capabilities: 0x%llx on memory region: > 0x%llx length: 0x%llx Status: %r\n", > >> + __func__, > >> + Capabilities, > >> + RegionStart, > >> + RegionLength, > >> + Status > >> + )); > >> + ASSERT_EFI_ERROR (Status); > >> + continue; > >> + } > >> + > >> + // > >> + // Set memory attributes according to the page table attribute and the > original attribute of descriptor > >> + // > >> + Status = gDS->SetMemorySpaceAttributes ( > >> + RegionStart, > >> + RegionLength, > >> + (MemorySpaceMap[Index].Attributes & > ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) > >> + ); > >> + > >> + if (EFI_ERROR (Status)) { > >> + DEBUG (( > >> + DEBUG_ERROR, > >> + "%a - failed to update GCD attributes: 0x%llx on memory region: > 0x%llx length: 0x%llx Status: %r\n", > >> + __func__, > >> + Attributes, > >> + RegionStart, > >> + RegionLength, > >> + Status > >> + )); > >> + ASSERT_EFI_ERROR (Status); > >> + continue; > >> + } > >> } > >> > >> return EFI_SUCCESS; > >> -- > >> 2.40.0 > >> > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 17:49 ` [edk2-devel] [PATCH " Michael D Kinney @ 2023-05-01 17:50 ` Ard Biesheuvel 2023-05-01 17:53 ` Oliver Smith-Denny 0 siblings, 1 reply; 26+ messages in thread From: Ard Biesheuvel @ 2023-05-01 17:50 UTC (permalink / raw) To: devel, michael.d.kinney Cc: osde@linux.microsoft.com, Ni, Ray, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On Mon, 1 May 2023 at 19:49, Michael D Kinney <michael.d.kinney@intel.com> wrote: > > Hi, > > These UEFI Memory Map, GCD, and Page Table interactions can be complex and I > agree there are some UEFI/PI spec clarifications that may help. > > Ray hosts a TianoCore design meeting when needed. Do you think a meeting with > an open discussion on these topics would help, or do we prefer to continue with > email discussions? > I'll gladly join a call to discuss this if we can find a timeslot that works for everyone in terms of time zone. (I'm on Paris time) ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 17:50 ` Ard Biesheuvel @ 2023-05-01 17:53 ` Oliver Smith-Denny 2023-05-01 17:59 ` Michael D Kinney 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-05-01 17:53 UTC (permalink / raw) To: Ard Biesheuvel, devel, michael.d.kinney Cc: Ni, Ray, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: > On Mon, 1 May 2023 at 19:49, Michael D Kinney > <michael.d.kinney@intel.com> wrote: >> >> Hi, >> >> These UEFI Memory Map, GCD, and Page Table interactions can be complex and I >> agree there are some UEFI/PI spec clarifications that may help. >> >> Ray hosts a TianoCore design meeting when needed. Do you think a meeting with >> an open discussion on these topics would help, or do we prefer to continue with >> email discussions? >> > > I'll gladly join a call to discuss this if we can find a timeslot that > works for everyone in terms of time zone. (I'm on Paris time) I also think a call would be great, I certainly would benefit from learning more here :). I'm sure various members of my team would be interested in joining, happy to be flexible on timeslot (we are generally in PST). Thanks, Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 17:53 ` Oliver Smith-Denny @ 2023-05-01 17:59 ` Michael D Kinney 2023-05-09 1:35 ` Ni, Ray 0 siblings, 1 reply; 26+ messages in thread From: Michael D Kinney @ 2023-05-01 17:59 UTC (permalink / raw) To: Oliver Smith-Denny, Ard Biesheuvel, devel@edk2.groups.io Cc: Ni, Ray, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan, Kinney, Michael D Thanks for the quick feedback. Ray is out this week. I will work with Ray to arrange a time slot, hopefully next week that works for everyone. Mike > -----Original Message----- > From: Oliver Smith-Denny <osde@linux.microsoft.com> > Sent: Monday, May 1, 2023 10:53 AM > To: Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Kinney, > Michael D <michael.d.kinney@intel.com> > Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>; > Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > <sami.mujawar@arm.com>; Michael Kubacki > <mikuback@linux.microsoft.com>; Sean Brogan > <sean.brogan@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities With Page Table Attributes > > On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: > > On Mon, 1 May 2023 at 19:49, Michael D Kinney > > <michael.d.kinney@intel.com> wrote: > >> > >> Hi, > >> > >> These UEFI Memory Map, GCD, and Page Table interactions can be > complex and I > >> agree there are some UEFI/PI spec clarifications that may help. > >> > >> Ray hosts a TianoCore design meeting when needed. Do you think a > meeting with > >> an open discussion on these topics would help, or do we prefer to > continue with > >> email discussions? > >> > > > > I'll gladly join a call to discuss this if we can find a timeslot that > > works for everyone in terms of time zone. (I'm on Paris time) > > I also think a call would be great, I certainly would benefit from > learning more here :). I'm sure various members of my team would > be interested in joining, happy to be flexible on timeslot (we are > generally in PST). > > Thanks, > Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-01 17:59 ` Michael D Kinney @ 2023-05-09 1:35 ` Ni, Ray 2023-05-09 2:03 ` Oliver Smith-Denny 0 siblings, 1 reply; 26+ messages in thread From: Ni, Ray @ 2023-05-09 1:35 UTC (permalink / raw) To: Kinney, Michael D, Oliver Smith-Denny, Ard Biesheuvel, devel@edk2.groups.io Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan [-- Attachment #1: Type: text/plain, Size: 2632 bytes --] All, Can you check if the meeting time is ok for you? It will be in this week: * PDT Thursday 07:00 * Paris Thursday 16:00 * Shanghai Thursday 22:00 Thanks, Ray > -----Original Message----- > From: Kinney, Michael D <michael.d.kinney@intel.com> > Sent: Tuesday, May 2, 2023 1:59 AM > To: Oliver Smith-Denny <osde@linux.microsoft.com>; Ard Biesheuvel > <ardb@kernel.org>; devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>; > Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > <sami.mujawar@arm.com>; Michael Kubacki > <mikuback@linux.microsoft.com>; Sean Brogan > <sean.brogan@microsoft.com>; Kinney, Michael D > <michael.d.kinney@intel.com> > Subject: RE: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities With Page Table Attributes > > Thanks for the quick feedback. Ray is out this week. I will work with Ray to > arrange a time slot, hopefully next week that works for everyone. > > Mike > > > -----Original Message----- > > From: Oliver Smith-Denny <osde@linux.microsoft.com> > > Sent: Monday, May 1, 2023 10:53 AM > > To: Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Kinney, > > Michael D <michael.d.kinney@intel.com> > > Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>; > > Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > > <sami.mujawar@arm.com>; Michael Kubacki > > <mikuback@linux.microsoft.com>; Sean Brogan > > <sean.brogan@microsoft.com> > > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > > Capabilities With Page Table Attributes > > > > On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: > > > On Mon, 1 May 2023 at 19:49, Michael D Kinney > > > <michael.d.kinney@intel.com> wrote: > > >> > > >> Hi, > > >> > > >> These UEFI Memory Map, GCD, and Page Table interactions can be > > complex and I > > >> agree there are some UEFI/PI spec clarifications that may help. > > >> > > >> Ray hosts a TianoCore design meeting when needed. Do you think a > > meeting with > > >> an open discussion on these topics would help, or do we prefer to > > continue with > > >> email discussions? > > >> > > > > > > I'll gladly join a call to discuss this if we can find a timeslot that > > > works for everyone in terms of time zone. (I'm on Paris time) > > > > I also think a call would be great, I certainly would benefit from > > learning more here :). I'm sure various members of my team would > > be interested in joining, happy to be flexible on timeslot (we are > > generally in PST). > > > > Thanks, > > Oliver [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: UEFI Memory Map GCD Page Table discussion - ARMX86.ics --] [-- Type: text/calendar; name="UEFI Memory Map GCD Page Table discussion - ARMX86.ics", Size: 51528 bytes --] BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN VERSION:2.0 METHOD:REQUEST X-MS-OLK-FORCEINSPECTOROPEN:TRUE BEGIN:VTIMEZONE TZID:China Standard Time BEGIN:STANDARD DTSTART:16010101T000000 TZOFFSETFROM:+0800 TZOFFSETTO:+0800 END:STANDARD END:VTIMEZONE BEGIN:VEVENT CLASS:PUBLIC CREATED:20230509T013045Z DESCRIPTION: \n____________________________________________________________ ____________________ \nMicrosoft Teams meeting \nJoin on your computer\, m obile app or room device \nClick here to join the meeting <https://teams.m icrosoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYT hkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4- 8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27-3d06c576cc19 %22%7d> \nMeeting ID: 256 188 860 359 \nPasscode: yJZsmm \nDownload Teams <https://www.microsoft.com/en-us/microsoft-teams/download-app> | Join on the web <https://www.microsoft.com/microsoft-teams/join-a-meeting> \nJoin with a video conferencing device \nteams@conf.intel.com \nVideo Conferenc e ID: 113 587 139 9 \nAlternate VTC instructions <https://conf.intel.com/t eams/?conf=1135871399&ivr=teams&d=conf.intel.com&test=test_call> \nOr cal l in (audio only) \n+86 10 5697 1340\,\,703118725# <tel:+861056971340\,\,7 03118725#> China\, 北京 (Beijing) \nPhone Conference ID: 703 118 725# \nFind a local number <https://dialin.teams.microsoft.com/d195d438-2daa-4 20e-b9ea-da26f9d1d6d5?id=703118725> | Reset PIN <https://dialin.teams.mic rosoft.com/usp/pstnconferencing> \nLearn More <https://aka.ms/JoinTeamsMe eting> | Meeting options <https://teams.microsoft.com/meetingOptions/?org anizerId=55d36a50-78be-4ced-bc27-3d06c576cc19&tenantId=46c98d88-e344-4ed4- 8496-4ed7712e255d&threadId=19_meeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThk NGQ0ZWYyMDZh@thread.v2&messageId=0&language=en-US> \n____________________ ____________________________________________________________ \n \n DTEND;TZID="China Standard Time":20230511T230000 DTSTAMP:20230509T013045Z DTSTART;TZID="China Standard Time":20230511T220000 LAST-MODIFIED:20230509T013045Z LOCATION:Microsoft Teams Meeting ORGANIZER;CN="Ni, Ray":mailto:ray.ni@intel.com PRIORITY:5 SEQUENCE:0 SUMMARY;LANGUAGE=en-us:UEFI Memory Map\, GCD\, Page Table discussion - ARM/ X86 TRANSP:OPAQUE UID:040000008200E00074C5B7101A82E0080000000020C8B5925882D901000000000000000 01000000043BF7D9269E0E24899EAE72E7F953601 X-ALT-DESC;FMTTYPE=text/html:\n<html xmlns:v="urn:schemas-microsoft-com:vml " xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-m icrosoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/200 4/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 15"><m eta name=Originator content="Microsoft Word 15"><link rel=File-List href=" cid:filelist.xml@01D98258.E5F06450"><!--[if gte mso 9]><xml>\n<o:OfficeDoc umentSettings>\n<o:AllowPNG/>\n</o:OfficeDocumentSettings>\n</xml><![endif ]--><!--[if gte mso 9]><xml>\n<w:WordDocument>\n<w:SpellingState>Clean</w: SpellingState>\n<w:GrammarState>Clean</w:GrammarState>\n<w:TrackMoves/>\n< w:TrackFormatting/>\n<w:EnvelopeVis/>\n<w:PunctuationKerning/>\n<w:Validat eAgainstSchemas/>\n<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>\n<w:Igno reMixedContent>false</w:IgnoreMixedContent>\n<w:AlwaysShowPlaceholderText> false</w:AlwaysShowPlaceholderText>\n<w:DoNotPromoteQF/>\n<w:LidThemeOther >EN-US</w:LidThemeOther>\n<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>\n<w:Lid ThemeComplexScript>X-NONE</w:LidThemeComplexScript>\n<w:Compatibility>\n<w :BreakWrappedTables/>\n<w:SnapToGridInCell/>\n<w:WrapTextWithPunct/>\n<w:U seAsianBreakRules/>\n<w:DontGrowAutofit/>\n<w:SplitPgBreakAndParaMark/>\n< w:EnableOpenTypeKerning/>\n<w:DontFlipMirrorIndents/>\n<w:OverrideTableSty leHps/>\n<w:UseFELayout/>\n</w:Compatibility>\n<m:mathPr>\n<m:mathFont m:v al="Cambria Math"/>\n<m:brkBin m:val="before"/>\n<m:brkBinSub m:val="-\ ;-"/>\n<m:smallFrac m:val="off"/>\n<m:dispDef/>\n<m:lMargin m:val="0"/>\n< m:rMargin m:val="0"/>\n<m:defJc m:val="centerGroup"/>\n<m:wrapIndent m:val ="1440"/>\n<m:intLim m:val="subSup"/>\n<m:naryLim m:val="undOvr"/>\n</m:ma thPr></w:WordDocument>\n</xml><![endif]--><!--[if gte mso 9]><xml>\n<w:Lat entStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden=" false" DefQFormat="false" DefPriority="99" LatentStyleCount="376">\n<w:Lsd Exception Locked="false" Priority="0" QFormat="true" Name="Normal"/>\n<w:L sdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>\ n<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenU sed="true" QFormat="true" Name="heading 2"/>\n<w:LsdException Locked="fals e" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Nam e="heading 3"/>\n<w:LsdException Locked="false" Priority="9" SemiHidden="t rue" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>\n<w:LsdExcept ion Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QF ormat="true" Name="heading 5"/>\n<w:LsdException Locked="false" Priority=" 9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6" />\n<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWh enUsed="true" QFormat="true" Name="heading 7"/>\n<w:LsdException Locked="f alse" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>\n<w:LsdException Locked="false" Priority="9" SemiHidden ="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="index 2"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhi deWhenUsed="true" Name="index 3"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="index 4"/>\n<w:LsdException Locked= "false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tr ue" Name="index 7"/>\n<w:LsdException Locked="false" SemiHidden="true" Unh ideWhenUsed="true" Name="index 8"/>\n<w:LsdException Locked="false" SemiHi dden="true" UnhideWhenUsed="true" Name="index 9"/>\n<w:LsdException Locked ="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1 "/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" Unhide WhenUsed="true" Name="toc 2"/>\n<w:LsdException Locked="false" Priority="3 9" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name ="toc 4"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/>\n<w:LsdException Locked="false" Prio rity="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/>\n<w:LsdEx ception Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="tru e" Name="toc 7"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden ="true" UnhideWhenUsed="true" Name="toc 8"/>\n<w:LsdException Locked="fals e" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Normal Indent"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="footnote text"/>\n<w:LsdException Locked="false" Se miHidden="true" UnhideWhenUsed="true" Name="annotation text"/>\n<w:LsdExce ption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header" />\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideW henUsed="true" Name="index heading"/>\n<w:LsdException Locked="false" Prio rity="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="cap tion"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed=" true" Name="table of figures"/>\n<w:LsdException Locked="false" SemiHidden ="true" UnhideWhenUsed="true" Name="envelope address"/>\n<w:LsdException L ocked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope retur n"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="footnote reference"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="annotation reference"/>\n<w:LsdExceptio n Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number "/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true " Name="page number"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="endnote reference"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/>\n<w:Ls dException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="ta ble of authorities"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="macro"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="toa heading"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="List Number"/>\n<w:LsdException Locked="false" SemiHidden=" true" UnhideWhenUsed="true" Name="List 2"/>\n<w:LsdException Locked="false " SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="List 5"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="List Bullet 2"/>\n<w:LsdException Locked="false" SemiHidde n="true" UnhideWhenUsed="true" Name="List Bullet 3"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> \n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" N ame="List Bullet 5"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="List Number 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List N umber 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="List Number 5"/>\n<w:LsdException Locked="false" Priority=" 10" QFormat="true" Name="Title"/>\n<w:LsdException Locked="false" SemiHidd en="true" UnhideWhenUsed="true" Name="Closing"/>\n<w:LsdException Locked=" false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/>\n<w:LsdE xception Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="tru e" Name="Default Paragraph Font"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="Body Text"/>\n<w:LsdException Locke d="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/ >\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="List Continue 2"/>\n<w:LsdException Locked="fal se" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/>\n<w:L sdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="L ist Continue 4"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhide WhenUsed="true" Name="List Continue 5"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="Message Header"/>\n<w:LsdExce ption Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>\n<w:Ls dException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Sa lutation"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Date"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Note Heading"/>\n<w:LsdException Locked="false" SemiHidden ="true" UnhideWhenUsed="true" Name="Body Text 2"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/>\n<w: LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name=" Body Text Indent 2"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="Body Text Indent 3"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hype rlink"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed= "true" Name="FollowedHyperlink"/>\n<w:LsdException Locked="false" Priority ="22" QFormat="true" Name="Strong"/>\n<w:LsdException Locked="false" Prior ity="20" QFormat="true" Name="Emphasis"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/>\n<w:LsdExcep tion Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Te xt"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tr ue" Name="E-mail Signature"/>\n<w:LsdException Locked="false" SemiHidden=" true" UnhideWhenUsed="true" Name="HTML Top of Form"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of F orm"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="t rue" Name="Normal (Web)"/>\n<w:LsdException Locked="false" SemiHidden="tru e" UnhideWhenUsed="true" Name="HTML Acronym"/>\n<w:LsdException Locked="fa lse" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTM L Cite"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed ="true" Name="HTML Code"/>\n<w:LsdException Locked="false" SemiHidden="tru e" UnhideWhenUsed="true" Name="HTML Definition"/>\n<w:LsdException Locked= "false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/>\n<w :LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name= "HTML Preformatted"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="HTML Sample"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML V ariable"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="Normal Table"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="annotation subject"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Outline List 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhi deWhenUsed="true" Name="Outline List 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Table Simple 2"/>\n<w:LsdException Locked="false" SemiHidd en="true" UnhideWhenUsed="true" Name="Table Simple 3"/>\n<w:LsdException L ocked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="Table Classic 2"/>\n<w:LsdException Locked="false" SemiHidden="tr ue" UnhideWhenUsed="true" Name="Table Classic 3"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/>\ n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Na me="Table Colorful 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Table Columns 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Unh ideWhenUsed="true" Name="Table Columns 2"/>\n<w:LsdException Locked="false " SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tab le Columns 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWh enUsed="true" Name="Table Columns 5"/>\n<w:LsdException Locked="false" Sem iHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/>\n<w:LsdExceptio n Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="Table Grid 3"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/>\n<w:LsdException Locked="fals e" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="Table Grid 7"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="Table Grid 8"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/>\n<w :LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name= "Table List 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideW henUsed="true" Name="Table List 3"/>\n<w:LsdException Locked="false" SemiH idden="true" UnhideWhenUsed="true" Name="Table List 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5" />\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="Table List 7"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/>\n<w:LsdExce ption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3 D effects 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhe nUsed="true" Name="Table 3D effects 2"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tab le Contemporary"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="Table Elegant"/>\n<w:LsdException Locked="false" Se miHidden="true" UnhideWhenUsed="true" Name="Table Professional"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tabl e Subtle 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhen Used="true" Name="Table Subtle 2"/>\n<w:LsdException Locked="false" SemiHi dden="true" UnhideWhenUsed="true" Name="Table Web 1"/>\n<w:LsdException Lo cked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/>\ n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Na me="Table Web 3"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="Balloon Text"/>\n<w:LsdException Locked="false" Pri ority="39" Name="Table Grid"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="Table Theme"/>\n<w:LsdException Locked= "false" SemiHidden="true" Name="Placeholder Text"/>\n<w:LsdException Locke d="false" Priority="1" QFormat="true" Name="No Spacing"/>\n<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>\n<w:LsdException Lock ed="false" Priority="61" Name="Light List"/>\n<w:LsdException Locked="fals e" Priority="62" Name="Light Grid"/>\n<w:LsdException Locked="false" Prior ity="63" Name="Medium Shading 1"/>\n<w:LsdException Locked="false" Priorit y="64" Name="Medium Shading 2"/>\n<w:LsdException Locked="false" Priority= "65" Name="Medium List 1"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>\n<w:LsdException Locked="false" Priority="67" Name= "Medium Grid 1"/>\n<w:LsdException Locked="false" Priority="68" Name="Medi um Grid 2"/>\n<w:LsdException Locked="false" Priority="69" Name="Medium Gr id 3"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List"/>\n <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>\n<w :LsdException Locked="false" Priority="72" Name="Colorful List"/>\n<w:LsdE xception Locked="false" Priority="73" Name="Colorful Grid"/>\n<w:LsdExcept ion Locked="false" Priority="60" Name="Light Shading Accent 1"/>\n<w:LsdEx ception Locked="false" Priority="61" Name="Light List Accent 1"/>\n<w:LsdE xception Locked="false" Priority="62" Name="Light Grid Accent 1"/>\n<w:Lsd Exception Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>\ n<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accen t 1"/>\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 A ccent 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Name="Revisio n"/>\n<w:LsdException Locked="false" Priority="34" QFormat="true" Name="Li st Paragraph"/>\n<w:LsdException Locked="false" Priority="29" QFormat="tru e" Name="Quote"/>\n<w:LsdException Locked="false" Priority="30" QFormat="t rue" Name="Intense Quote"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>\n<w:LsdException Locked="false" Priority=" 67" Name="Medium Grid 1 Accent 1"/>\n<w:LsdException Locked="false" Priori ty="68" Name="Medium Grid 2 Accent 1"/>\n<w:LsdException Locked="false" Pr iority="69" Name="Medium Grid 3 Accent 1"/>\n<w:LsdException Locked="false " Priority="70" Name="Dark List Accent 1"/>\n<w:LsdException Locked="false " Priority="71" Name="Colorful Shading Accent 1"/>\n<w:LsdException Locked ="false" Priority="72" Name="Colorful List Accent 1"/>\n<w:LsdException Lo cked="false" Priority="73" Name="Colorful Grid Accent 1"/>\n<w:LsdExceptio n Locked="false" Priority="60" Name="Light Shading Accent 2"/>\n<w:LsdExce ption Locked="false" Priority="61" Name="Light List Accent 2"/>\n<w:LsdExc eption Locked="false" Priority="62" Name="Light Grid Accent 2"/>\n<w:LsdEx ception Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>\n< w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Acc ent 2"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="67" Name="Medium Gr id 1 Accent 2"/>\n<w:LsdException Locked="false" Priority="68" Name="Mediu m Grid 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="69" Name="M edium Grid 3 Accent 2"/>\n<w:LsdException Locked="false" Priority="70" Nam e="Dark List Accent 2"/>\n<w:LsdException Locked="false" Priority="71" Nam e="Colorful Shading Accent 2"/>\n<w:LsdException Locked="false" Priority=" 72" Name="Colorful List Accent 2"/>\n<w:LsdException Locked="false" Priori ty="73" Name="Colorful Grid Accent 2"/>\n<w:LsdException Locked="false" Pr iority="60" Name="Light Shading Accent 3"/>\n<w:LsdException Locked="false " Priority="61" Name="Light List Accent 3"/>\n<w:LsdException Locked="fals e" Priority="62" Name="Light Grid Accent 3"/>\n<w:LsdException Locked="fal se" Priority="63" Name="Medium Shading 1 Accent 3"/>\n<w:LsdException Lock ed="false" Priority="64" Name="Medium Shading 2 Accent 3"/>\n<w:LsdExcepti on Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>\n<w:LsdExc eption Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>\n<w:Ls dException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>\n< w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/ >\n<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>\n<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>\n<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>\n<w:LsdException Locked="false" Priority="73" Name="Color ful Grid Accent 3"/>\n<w:LsdException Locked="false" Priority="60" Name="L ight Shading Accent 4"/>\n<w:LsdException Locked="false" Priority="61" Nam e="Light List Accent 4"/>\n<w:LsdException Locked="false" Priority="62" Na me="Light Grid Accent 4"/>\n<w:LsdException Locked="false" Priority="63" N ame="Medium Shading 1 Accent 4"/>\n<w:LsdException Locked="false" Priority ="64" Name="Medium Shading 2 Accent 4"/>\n<w:LsdException Locked="false" P riority="65" Name="Medium List 1 Accent 4"/>\n<w:LsdException Locked="fals e" Priority="66" Name="Medium List 2 Accent 4"/>\n<w:LsdException Locked=" false" Priority="67" Name="Medium Grid 1 Accent 4"/>\n<w:LsdException Lock ed="false" Priority="68" Name="Medium Grid 2 Accent 4"/>\n<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>\n<w:LsdExcept ion Locked="false" Priority="70" Name="Dark List Accent 4"/>\n<w:LsdExcept ion Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>\n<w:Ls dException Locked="false" Priority="72" Name="Colorful List Accent 4"/>\n< w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/ >\n<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>\n<w:LsdException Locked="false" Priority="61" Name="Light List Accen t 5"/>\n<w:LsdException Locked="false" Priority="62" Name="Light Grid Acce nt 5"/>\n<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>\n<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>\n<w:LsdException Locked="false" Priority="65" Name=" Medium List 1 Accent 5"/>\n<w:LsdException Locked="false" Priority="66" Na me="Medium List 2 Accent 5"/>\n<w:LsdException Locked="false" Priority="67 " Name="Medium Grid 1 Accent 5"/>\n<w:LsdException Locked="false" Priority ="68" Name="Medium Grid 2 Accent 5"/>\n<w:LsdException Locked="false" Prio rity="69" Name="Medium Grid 3 Accent 5"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>\n<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>\n<w:LsdException Locked=" false" Priority="72" Name="Colorful List Accent 5"/>\n<w:LsdException Lock ed="false" Priority="73" Name="Colorful Grid Accent 5"/>\n<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>\n<w:LsdExcept ion Locked="false" Priority="61" Name="Light List Accent 6"/>\n<w:LsdExcep tion Locked="false" Priority="62" Name="Light Grid Accent 6"/>\n<w:LsdExce ption Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>\n<w: LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6" />\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accen t 6"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 A ccent 6"/>\n<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>\n<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="69" Name="Med ium Grid 3 Accent 6"/>\n<w:LsdException Locked="false" Priority="70" Name= "Dark List Accent 6"/>\n<w:LsdException Locked="false" Priority="71" Name= "Colorful Shading Accent 6"/>\n<w:LsdException Locked="false" Priority="72 " Name="Colorful List Accent 6"/>\n<w:LsdException Locked="false" Priority ="73" Name="Colorful Grid Accent 6"/>\n<w:LsdException Locked="false" Prio rity="19" QFormat="true" Name="Subtle Emphasis"/>\n<w:LsdException Locked= "false" Priority="21" QFormat="true" Name="Intense Emphasis"/>\n<w:LsdExce ption Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/ >\n<w:LsdException Locked="false" Priority="32" QFormat="true" Name="Inten se Reference"/>\n<w:LsdException Locked="false" Priority="33" QFormat="tru e" Name="Book Title"/>\n<w:LsdException Locked="false" Priority="37" SemiH idden="true" UnhideWhenUsed="true" Name="Bibliography"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QForm at="true" Name="TOC Heading"/>\n<w:LsdException Locked="false" Priority="4 1" Name="Plain Table 1"/>\n<w:LsdException Locked="false" Priority="42" Na me="Plain Table 2"/>\n<w:LsdException Locked="false" Priority="43" Name="P lain Table 3"/>\n<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>\n<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>\n<w:LsdException Locked="false" Priority="40" Name="Grid Table Light "/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light "/>\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>\n< w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>\n<w:LsdE xception Locked="false" Priority="49" Name="Grid Table 4"/>\n<w:LsdExcepti on Locked="false" Priority="50" Name="Grid Table 5 Dark"/>\n<w:LsdExceptio n Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>\n<w:LsdExcep tion Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>\n<w:LsdEx ception Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/>\ n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1" />\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Acc ent 1"/>\n<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>\n<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/>\n<w:LsdException Locked="false" P riority="46" Name="Grid Table 1 Light Accent 2"/>\n<w:LsdException Locked= "false" Priority="47" Name="Grid Table 2 Accent 2"/>\n<w:LsdException Lock ed="false" Priority="48" Name="Grid Table 3 Accent 2"/>\n<w:LsdException L ocked="false" Priority="49" Name="Grid Table 4 Accent 2"/>\n<w:LsdExceptio n Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>\n<w:Lsd Exception Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colo rful Accent 2"/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/>\n<w:LsdException Locked="false" Priority="47" Na me="Grid Table 2 Accent 3"/>\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>\n<w:LsdException Locked="false" Priority=" 49" Name="Grid Table 4 Accent 3"/>\n<w:LsdException Locked="false" Priorit y="50" Name="Grid Table 5 Dark Accent 3"/>\n<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/>\n<w:LsdException Lo cked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/>\n<w:Lsd Exception Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/ >\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Acce nt 4"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 A ccent 4"/>\n<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>\n<w:LsdException Locked="false" Priority="51" Name="Gri d Table 6 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="5 2" Name="Grid Table 7 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/>\n<w:LsdException Locke d="false" Priority="47" Name="Grid Table 2 Accent 5"/>\n<w:LsdException Lo cked="false" Priority="48" Name="Grid Table 3 Accent 5"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>\n<w:LsdExcept ion Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>\n<w:L sdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accen t 5"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Co lorful Accent 5"/>\n<w:LsdException Locked="false" Priority="46" Name="Gri d Table 1 Light Accent 6"/>\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="4 8" Name="Grid Table 3 Accent 6"/>\n<w:LsdException Locked="false" Priority ="49" Name="Grid Table 4 Accent 6"/>\n<w:LsdException Locked="false" Prior ity="50" Name="Grid Table 5 Dark Accent 6"/>\n<w:LsdException Locked="fals e" Priority="51" Name="Grid Table 6 Colorful Accent 6"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/>\n<w:L sdException Locked="false" Priority="46" Name="List Table 1 Light"/>\n<w:L sdException Locked="false" Priority="47" Name="List Table 2"/>\n<w:LsdExce ption Locked="false" Priority="48" Name="List Table 3"/>\n<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>\n<w:LsdException Locked ="false" Priority="50" Name="List Table 5 Dark"/>\n<w:LsdException Locked= "false" Priority="51" Name="List Table 6 Colorful"/>\n<w:LsdException Lock ed="false" Priority="52" Name="List Table 7 Colorful"/>\n<w:LsdException L ocked="false" Priority="46" Name="List Table 1 Light Accent 1"/>\n<w:LsdEx ception Locked="false" Priority="47" Name="List Table 2 Accent 1"/>\n<w:Ls dException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>\n<w :LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>\ n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Acce nt 1"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 C olorful Accent 1"/>\n<w:LsdException Locked="false" Priority="52" Name="Li st Table 7 Colorful Accent 1"/>\n<w:LsdException Locked="false" Priority=" 46" Name="List Table 1 Light Accent 2"/>\n<w:LsdException Locked="false" P riority="47" Name="List Table 2 Accent 2"/>\n<w:LsdException Locked="false " Priority="48" Name="List Table 3 Accent 2"/>\n<w:LsdException Locked="fa lse" Priority="49" Name="List Table 4 Accent 2"/>\n<w:LsdException Locked= "false" Priority="50" Name="List Table 5 Dark Accent 2"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/>\n<w: LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Acce nt 2"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 L ight Accent 3"/>\n<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>\n<w:LsdException Locked="false" Priority="48" Name="Li st Table 3 Accent 3"/>\n<w:LsdException Locked="false" Priority="49" Name= "List Table 4 Accent 3"/>\n<w:LsdException Locked="false" Priority="50" Na me="List Table 5 Dark Accent 3"/>\n<w:LsdException Locked="false" Priority ="51" Name="List Table 6 Colorful Accent 3"/>\n<w:LsdException Locked="fal se" Priority="52" Name="List Table 7 Colorful Accent 3"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/>\n<w:Lsd Exception Locked="false" Priority="47" Name="List Table 2 Accent 4"/>\n<w: LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>\n <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/ >\n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Ac cent 4"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="52" Name=" List Table 7 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority ="46" Name="List Table 1 Light Accent 5"/>\n<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>\n<w:LsdException Locked="fal se" Priority="48" Name="List Table 3 Accent 5"/>\n<w:LsdException Locked=" false" Priority="49" Name="List Table 4 Accent 5"/>\n<w:LsdException Locke d="false" Priority="50" Name="List Table 5 Dark Accent 5"/>\n<w:LsdExcepti on Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/>\n< w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Ac cent 5"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/>\n<w:LsdException Locked="false" Priority="47" Name="Lis t Table 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="48" Name=" List Table 3 Accent 6"/>\n<w:LsdException Locked="false" Priority="49" Nam e="List Table 4 Accent 6"/>\n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>\n<w:LsdException Locked="false" Priori ty="51" Name="List Table 6 Colorful Accent 6"/>\n<w:LsdException Locked="f alse" Priority="52" Name="List Table 7 Colorful Accent 6"/>\n<w:LsdExcepti on Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> \n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" N ame="Smart Hyperlink"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/>\n<w:LsdException Locked="false" Sem iHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Link"/>\n</w:LatentStyles>\n</xml><![endif]--><style><!--\n/* Font Defini tions */\n@font-face\n {font-family:"Cambria Math"\;\n panose-1:2 4 5 3 5 4 6 3 2 4\;\n mso-font-charset:0\;\n mso-generic-font-family:roman\;\n mso -font-pitch:variable\;\n mso-font-signature:-536869121 1107305727 33554432 0 415 0\;}\n@font-face\n {font-family:DengXian\;\n panose-1:2 1 6 0 3 1 1 1 1 1\;\n mso-font-alt:\\7B49\\7EBF\;\n mso-font-charset:134\;\n mso-gene ric-font-family:auto\;\n mso-font-pitch:variable\;\n mso-font-signature:-1 610612033 953122042 22 0 262159 0\;}\n@font-face\n {font-family:Calibri\;\ n panose-1:2 15 5 2 2 2 4 3 2 4\;\n mso-font-charset:0\;\n mso-generic-fon t-family:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:-4697500 17 -1040178053 9 0 511 0\;}\n@font-face\n {font-family:"Segoe UI"\;\n pano se-1:2 11 5 2 4 2 4 2 2 3\;\n mso-font-charset:0\;\n mso-generic-font-fami ly:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:-469750017 -10 73683329 9 0 511 0\;}\n@font-face\n {font-family:"Microsoft JhengHei"\;\n panose-1:2 11 6 4 3 5 4 4 2 4\;\n mso-font-charset:136\;\n mso-generic-fon t-family:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:679 6846 72000 22 0 1048585 0\;}\n@font-face\n {font-family:"\\@Microsoft JhengHei" \;\n mso-font-charset:136\;\n mso-generic-font-family:swiss\;\n mso-font-p itch:variable\;\n mso-font-signature:679 684672000 22 0 1048585 0\;}\n@fon t-face\n {font-family:"Segoe UI Semibold"\;\n panose-1:2 11 7 2 4 2 4 2 2 3\;\n mso-font-charset:0\;\n mso-generic-font-family:swiss\;\n mso-font-pi tch:variable\;\n mso-font-signature:-469750017 -1073683329 9 0 511 0\;}\n@ font-face\n {font-family:"\\@DengXian"\;\n panose-1:2 1 6 0 3 1 1 1 1 1\;\ n mso-font-charset:134\;\n mso-generic-font-family:auto\;\n mso-font-pitch :variable\;\n mso-font-signature:-1610612033 953122042 22 0 262159 0\;}\n/ * Style Definitions */\np.MsoNormal\, li.MsoNormal\, div.MsoNormal\n {mso- style-unhide:no\;\n mso-style-qformat:yes\;\n mso-style-parent:""\;\n marg in:0in\;\n mso-pagination:widow-orphan\;\n font-size:11.0pt\;\n font-famil y:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-fareast- font-family:DengXian\;\n mso-hansi-font-family:Calibri\;\n mso-bidi-font-f amily:"Times New Roman"\;}\na:link\, span.MsoHyperlink\n {mso-style-noshow :yes\;\n mso-style-priority:99\;\n color:#0563C1\;\n text-decoration:under line\;\n text-underline:single\;}\na:visited\, span.MsoHyperlinkFollowed\n {mso-style-noshow:yes\;\n mso-style-priority:99\;\n color:#954F72\;\n tex t-decoration:underline\;\n text-underline:single\;}\nspan.EmailStyle17\n { mso-style-type:personal-compose\;\n mso-style-noshow:yes\;\n mso-style-unh ide:no\;\n mso-ansi-font-size:11.0pt\;\n mso-bidi-font-size:11.0pt\;\n fon t-family:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-f areast-font-family:DengXian\;\n mso-hansi-font-family:Calibri\;\n mso-bidi -font-family:"Times New Roman"\;\n color:windowtext\;}\nspan.SpellE\n {mso -style-name:""\;\n mso-spl-e:yes\;}\nspan.GramE\n {mso-style-name:""\;\n m so-gram-e:yes\;}\n.MsoChpDefault\n {mso-style-type:export-only\;\n mso-def ault-props:yes\;\n font-family:"Calibri"\,sans-serif\;\n mso-ascii-font-fa mily:Calibri\;\n mso-fareast-font-family:DengXian\;\n mso-hansi-font-famil y:Calibri\;\n mso-bidi-font-family:"Times New Roman"\;}\n@page WordSection 1\n {size:8.5in 11.0in\;\n margin:1.0in 1.0in 1.0in 1.0in\;\n mso-header-m argin:.5in\;\n mso-footer-margin:.5in\;\n mso-paper-source:0\;}\ndiv.WordS ection1\n {page:WordSection1\;}\n--></style><!--[if gte mso 10]><style>/* Style Definitions */\ntable.MsoNormalTable\n {mso-style-name:"Table Normal "\;\n mso-tstyle-rowband-size:0\;\n mso-tstyle-colband-size:0\;\n mso-styl e-noshow:yes\;\n mso-style-priority:99\;\n mso-style-parent:""\;\n mso-pad ding-alt:0in 5.4pt 0in 5.4pt\;\n mso-para-margin:0in\;\n mso-pagination:wi dow-orphan\;\n font-size:11.0pt\;\n font-family:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-hansi-font-family:Calibri\;\n mso-bi di-font-family:"Times New Roman"\;}\n</style><![endif]--><!--[if gte mso 9 ]><xml>\n<o:shapedefaults v:ext="edit" spidmax="1026" />\n</xml><![endif]- -><!--[if gte mso 9]><xml>\n<o:shapelayout v:ext="edit">\n<o:idmap v:ext=" edit" data="1" />\n</o:shapelayout></xml><![endif]--></head><body lang=EN- US link="#0563C1" vlink="#954F72" style='tab-interval:.5in\;word-wrap:brea k-word'><div class=WordSection1><p class=MsoNormal><o:p> \;</o:p></p>< div><p class=MsoNormal><span style='mso-fareast-font-family:"Times New Rom an"\;color:#5F5F5F'>______________________________________________________ __________________________</span><span style='mso-fareast-font-family:"Tim es New Roman"'> <o:p></o:p></span></p></div><div><div style='margin-top:.2 5in\;margin-bottom:15.0pt'><p class=MsoNormal><span style='font-size:18.0p t\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Microsoft Teams meeting</span><span style='font-fam ily:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;col or:#252424'> <o:p></o:p></span></p></div><div style='margin-bottom:15.0pt' ><div><p class=MsoNormal><b><span style='font-size:10.5pt\;font-family:"Se goe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252 424'>Join on your computer\, mobile app or room <span class=GramE>device</ span></span></b><b><span style='font-family:"Segoe UI"\,sans-serif\;mso-fa reast-font-family:"Times New Roman"\;color:#252424'> <o:p></o:p></span></b ></p></div><p class=MsoNormal><span style='font-family:"Segoe UI"\,sans-se rif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'><a href="ht tps://teams.microsoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00M TdmLTlkZmUtYThkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d 88-e344-4ed4-8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27 -3d06c576cc19%22%7d" target="_blank"><span style='font-size:10.5pt\;font-f amily:"Segoe UI Semibold"\,sans-serif\;color:#6264A7'>Click here to join t he meeting</span></a> <o:p></o:p></span></p></div><div style='margin-top:1 5.0pt\;margin-bottom:15.0pt'><div style='margin-bottom:3.0pt'><p class=Mso Normal><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\; mso-fareast-font-family:"Times New Roman"\;color:#252424'>Meeting ID: </sp an><span style='font-size:12.0pt\;font-family:"Segoe UI"\,sans-serif\;mso- fareast-font-family:"Times New Roman"\;color:#252424'>256 188 860 359</spa n><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-f areast-font-family:"Times New Roman"\;color:#252424'> </span><span style=' font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Rom an"\;color:#252424'><br></span><span style='font-size:10.5pt\;font-family: "Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:# 252424'>Passcode: </span><span class=SpellE><span style='font-size:12.0pt\ ;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Ro man"\;color:#252424'>yJZsmm</span></span><span style='font-size:12.0pt\;fo nt-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman "\;color:#252424'> </span><span style='font-family:"Segoe UI"\,sans-serif\ ;mso-fareast-font-family:"Times New Roman"\;color:#252424'><o:p></o:p></sp an></p><div><p class=MsoNormal><span style='font-size:10.5pt\;font-family: "Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:# 252424'><a href="https://www.microsoft.com/en-us/microsoft-teams/download- app" target="_blank"><span style='color:#6264A7'>Download Teams</span></a> | <a href="https://www.microsoft.com/microsoft-teams/join-a-meeting" targ et="_blank"><span style='color:#6264A7'>Join on the web</span></a><o:p></o :p></span></p></div></div></div><div style='margin-bottom:3.0pt'><p class= MsoNormal><b><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-s erif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Join with a video conferencing <span class=GramE>device</span></span></b><span style ='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New R oman"\;color:#252424'> <o:p></o:p></span></p></div><div><p class=MsoNormal ><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fa reast-font-family:"Times New Roman"\;color:#252424'>teams@conf.intel.com < o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size: 10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Video Conference ID: </span><span style='font- size:12.0pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:" Times New Roman"\;color:#252424'>113 587 139 9 </span><span style='font-fa mily:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;co lor:#252424'><o:p></o:p></span></p></div><div style='margin-bottom:15.0pt' ><p class=MsoNormal><span style='font-size:10.5pt\;font-family:"Segoe UI"\ ,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'><a href="https://conf.intel.com/teams/?conf=1135871399&\;ivr=teams&\;d= conf.intel.com&\;test=test_call"><span style='color:#6264A7'>Alternate VTC instructions</span></a> <o:p></o:p></span></p></div><div style='margin -bottom:3.0pt'><div style='margin-bottom:3.0pt'><p class=MsoNormal><b><spa n style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast -font-family:"Times New Roman"\;color:#252424'>Or call in (audio only)</sp an></b><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-f amily:"Times New Roman"\;color:#252424'> <o:p></o:p></span></p></div><div style='margin-bottom:3.0pt'><p class=MsoNormal><span style='font-family:"S egoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#25 2424'><a href="tel:+861056971340\,\,703118725# "><span style='font-size:10 .5pt\;color:#6264A7'>+86 10 5697 1340\,\,703118725#</span></a> </span><spa n style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast -font-family:"Times New Roman"\;color:#252424'> \; China\, </span><spa n lang=ZH-CN style='font-size:10.5pt\;font-family:"Microsoft JhengHei"\,sa ns-serif\;mso-bidi-font-family:"Microsoft JhengHei"\;color:#252424'>北京 </span><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\; mso-fareast-font-family:"Times New Roman"\;color:#252424'> (Beijing) </spa n><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family :"Times New Roman"\;color:#252424'><o:p></o:p></span></p></div></div><p cl ass=MsoNormal><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans- serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Phone Con ference ID: </span><span style='font-size:12.0pt\;font-family:"Segoe UI"\, sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>703 118 725# </span><span style='font-family:"Segoe UI"\,sans-serif\;mso-farea st-font-family:"Times New Roman"\;color:#252424'><o:p></o:p></span></p><di v style='margin-bottom:15.0pt'><p class=MsoNormal><span style='font-family :"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color: #252424'><a href="https://dialin.teams.microsoft.com/d195d438-2daa-420e-b9 ea-da26f9d1d6d5?id=703118725" target="_blank"><span style='font-size:10.5p t\;color:#6264A7'>Find a local number</span></a> | <a href="https://dialin .teams.microsoft.com/usp/pstnconferencing" target="_blank"><span style='fo nt-size:10.5pt\;color:#6264A7'>Reset PIN</span></a> <o:p></o:p></span></p> </div><div style='margin-top:15.0pt\;margin-bottom:.25in'><p class=MsoNorm al><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-famil y:"Times New Roman"\;color:#252424'><a href="https://aka.ms/JoinTeamsMeeti ng" target="_blank"><span style='font-size:10.5pt\;color:#6264A7'>Learn Mo re</span></a> | <a href="https://teams.microsoft.com/meetingOptions/?organ izerId=55d36a50-78be-4ced-bc27-3d06c576cc19&\;tenantId=46c98d88-e344-4e d4-8496-4ed7712e255d&\;threadId=19_meeting_YTk4ZDU3YjItODkxZC00MTdmLTlk ZmUtYThkNGQ0ZWYyMDZh@thread.v2&\;messageId=0&\;language=en-US" targe t="_blank"><span style='font-size:10.5pt\;color:#6264A7'>Meeting options</ span></a> <o:p></o:p></span></p></div></div><div><p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"\;color:#5F5F5F'>_________ _______________________________________________________________________</s pan><span style='mso-fareast-font-family:"Times New Roman"'> </span><span style='mso-ascii-font-family:Calibri\;mso-fareast-font-family:"Times New R oman"\;mso-hansi-font-family:Calibri\;mso-bidi-font-family:Calibri'><o:p>< /o:p></span></p></div><p class=MsoNormal><o:p> \;</o:p></p></div></bod y></html> X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-DISALLOW-COUNTER:FALSE X-MS-OLK-AUTOFILLLOCATION:FALSE X-MS-OLK-CONFTYPE:0 BEGIN:VALARM TRIGGER:-PT15M ACTION:DISPLAY DESCRIPTION:Reminder END:VALARM END:VEVENT END:VCALENDAR ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-09 1:35 ` Ni, Ray @ 2023-05-09 2:03 ` Oliver Smith-Denny 2023-05-09 2:04 ` Michael D Kinney 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-05-09 2:03 UTC (permalink / raw) To: Ni, Ray, Kinney, Michael D, Ard Biesheuvel, devel@edk2.groups.io Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan Hi Ray, Thanks for setting up a meeting on this! We have some conflicts on our side for this week, does it work for everyone to have it the following Thursday (May 18th)? The time works for us. Thanks, Oliver On 5/8/2023 6:35 PM, Ni, Ray wrote: > All, > Can you check if the meeting time is ok for you? > > It will be in this week: > * PDT Thursday 07:00 > * Paris Thursday 16:00 > * Shanghai Thursday 22:00 > > Thanks, > Ray > > >> -----Original Message----- >> From: Kinney, Michael D <michael.d.kinney@intel.com> >> Sent: Tuesday, May 2, 2023 1:59 AM >> To: Oliver Smith-Denny <osde@linux.microsoft.com>; Ard Biesheuvel >> <ardb@kernel.org>; devel@edk2.groups.io >> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>; >> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar >> <sami.mujawar@arm.com>; Michael Kubacki >> <mikuback@linux.microsoft.com>; Sean Brogan >> <sean.brogan@microsoft.com>; Kinney, Michael D >> <michael.d.kinney@intel.com> >> Subject: RE: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >> Capabilities With Page Table Attributes >> >> Thanks for the quick feedback. Ray is out this week. I will work with Ray to >> arrange a time slot, hopefully next week that works for everyone. >> >> Mike >> >>> -----Original Message----- >>> From: Oliver Smith-Denny <osde@linux.microsoft.com> >>> Sent: Monday, May 1, 2023 10:53 AM >>> To: Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Kinney, >>> Michael D <michael.d.kinney@intel.com> >>> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>; >>> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar >>> <sami.mujawar@arm.com>; Michael Kubacki >>> <mikuback@linux.microsoft.com>; Sean Brogan >>> <sean.brogan@microsoft.com> >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >>> Capabilities With Page Table Attributes >>> >>> On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: >>>> On Mon, 1 May 2023 at 19:49, Michael D Kinney >>>> <michael.d.kinney@intel.com> wrote: >>>>> >>>>> Hi, >>>>> >>>>> These UEFI Memory Map, GCD, and Page Table interactions can be >>> complex and I >>>>> agree there are some UEFI/PI spec clarifications that may help. >>>>> >>>>> Ray hosts a TianoCore design meeting when needed. Do you think a >>> meeting with >>>>> an open discussion on these topics would help, or do we prefer to >>> continue with >>>>> email discussions? >>>>> >>>> >>>> I'll gladly join a call to discuss this if we can find a timeslot that >>>> works for everyone in terms of time zone. (I'm on Paris time) >>> >>> I also think a call would be great, I certainly would benefit from >>> learning more here :). I'm sure various members of my team would >>> be interested in joining, happy to be flexible on timeslot (we are >>> generally in PST). >>> >>> Thanks, >>> Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-09 2:03 ` Oliver Smith-Denny @ 2023-05-09 2:04 ` Michael D Kinney 2023-05-09 6:59 ` Ard Biesheuvel 0 siblings, 1 reply; 26+ messages in thread From: Michael D Kinney @ 2023-05-09 2:04 UTC (permalink / raw) To: Oliver Smith-Denny, Ni, Ray, Ard Biesheuvel, devel@edk2.groups.io Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan, Kinney, Michael D I would prefer next week as well. Mike > -----Original Message----- > From: Oliver Smith-Denny <osde@linux.microsoft.com> > Sent: Monday, May 8, 2023 7:03 PM > To: Ni, Ray <ray.ni@intel.com>; Kinney, Michael D > <michael.d.kinney@intel.com>; Ard Biesheuvel <ardb@kernel.org>; > devel@edk2.groups.io > Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan > <sean.brogan@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities With Page Table Attributes > > Hi Ray, > > Thanks for setting up a meeting on this! We have some > conflicts on our side for this week, does it work > for everyone to have it the following Thursday > (May 18th)? > > The time works for us. > > Thanks, > Oliver > > On 5/8/2023 6:35 PM, Ni, Ray wrote: > > All, > > Can you check if the meeting time is ok for you? > > > > It will be in this week: > > * PDT Thursday 07:00 > > * Paris Thursday 16:00 > > * Shanghai Thursday 22:00 > > > > Thanks, > > Ray > > > > > >> -----Original Message----- > >> From: Kinney, Michael D <michael.d.kinney@intel.com> > >> Sent: Tuesday, May 2, 2023 1:59 AM > >> To: Oliver Smith-Denny <osde@linux.microsoft.com>; Ard Biesheuvel > >> <ardb@kernel.org>; devel@edk2.groups.io > >> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm > <quic_llindhol@quicinc.com>; > >> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > >> <sami.mujawar@arm.com>; Michael Kubacki > >> <mikuback@linux.microsoft.com>; Sean Brogan > >> <sean.brogan@microsoft.com>; Kinney, Michael D > >> <michael.d.kinney@intel.com> > >> Subject: RE: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >> Capabilities With Page Table Attributes > >> > >> Thanks for the quick feedback. Ray is out this week. I will work with Ray to > >> arrange a time slot, hopefully next week that works for everyone. > >> > >> Mike > >> > >>> -----Original Message----- > >>> From: Oliver Smith-Denny <osde@linux.microsoft.com> > >>> Sent: Monday, May 1, 2023 10:53 AM > >>> To: Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Kinney, > >>> Michael D <michael.d.kinney@intel.com> > >>> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm > <quic_llindhol@quicinc.com>; > >>> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > >>> <sami.mujawar@arm.com>; Michael Kubacki > >>> <mikuback@linux.microsoft.com>; Sean Brogan > >>> <sean.brogan@microsoft.com> > >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >>> Capabilities With Page Table Attributes > >>> > >>> On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: > >>>> On Mon, 1 May 2023 at 19:49, Michael D Kinney > >>>> <michael.d.kinney@intel.com> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> These UEFI Memory Map, GCD, and Page Table interactions can be > >>> complex and I > >>>>> agree there are some UEFI/PI spec clarifications that may help. > >>>>> > >>>>> Ray hosts a TianoCore design meeting when needed. Do you think a > >>> meeting with > >>>>> an open discussion on these topics would help, or do we prefer to > >>> continue with > >>>>> email discussions? > >>>>> > >>>> > >>>> I'll gladly join a call to discuss this if we can find a timeslot that > >>>> works for everyone in terms of time zone. (I'm on Paris time) > >>> > >>> I also think a call would be great, I certainly would benefit from > >>> learning more here :). I'm sure various members of my team would > >>> be interested in joining, happy to be flexible on timeslot (we are > >>> generally in PST). > >>> > >>> Thanks, > >>> Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-09 2:04 ` Michael D Kinney @ 2023-05-09 6:59 ` Ard Biesheuvel 2023-05-09 14:59 ` Oliver Smith-Denny 0 siblings, 1 reply; 26+ messages in thread From: Ard Biesheuvel @ 2023-05-09 6:59 UTC (permalink / raw) To: Kinney, Michael D Cc: Oliver Smith-Denny, Ni, Ray, devel@edk2.groups.io, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On Tue, 9 May 2023 at 04:04, Kinney, Michael D <michael.d.kinney@intel.com> wrote: > > I would prefer next week as well. > > Mike > Next week, i can only do Wednesday. The week after (22-26), the time slot works for me on any day of the week. -- Ard. > > -----Original Message----- > > From: Oliver Smith-Denny <osde@linux.microsoft.com> > > Sent: Monday, May 8, 2023 7:03 PM > > To: Ni, Ray <ray.ni@intel.com>; Kinney, Michael D > > <michael.d.kinney@intel.com>; Ard Biesheuvel <ardb@kernel.org>; > > devel@edk2.groups.io > > Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > > <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > > Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan > > <sean.brogan@microsoft.com> > > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > > Capabilities With Page Table Attributes > > > > Hi Ray, > > > > Thanks for setting up a meeting on this! We have some > > conflicts on our side for this week, does it work > > for everyone to have it the following Thursday > > (May 18th)? > > > > The time works for us. > > > > Thanks, > > Oliver > > > > On 5/8/2023 6:35 PM, Ni, Ray wrote: > > > All, > > > Can you check if the meeting time is ok for you? > > > > > > It will be in this week: > > > * PDT Thursday 07:00 > > > * Paris Thursday 16:00 > > > * Shanghai Thursday 22:00 > > > > > > Thanks, > > > Ray > > > > > > > > >> -----Original Message----- > > >> From: Kinney, Michael D <michael.d.kinney@intel.com> > > >> Sent: Tuesday, May 2, 2023 1:59 AM > > >> To: Oliver Smith-Denny <osde@linux.microsoft.com>; Ard Biesheuvel > > >> <ardb@kernel.org>; devel@edk2.groups.io > > >> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm > > <quic_llindhol@quicinc.com>; > > >> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > > >> <sami.mujawar@arm.com>; Michael Kubacki > > >> <mikuback@linux.microsoft.com>; Sean Brogan > > >> <sean.brogan@microsoft.com>; Kinney, Michael D > > >> <michael.d.kinney@intel.com> > > >> Subject: RE: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > > >> Capabilities With Page Table Attributes > > >> > > >> Thanks for the quick feedback. Ray is out this week. I will work with Ray to > > >> arrange a time slot, hopefully next week that works for everyone. > > >> > > >> Mike > > >> > > >>> -----Original Message----- > > >>> From: Oliver Smith-Denny <osde@linux.microsoft.com> > > >>> Sent: Monday, May 1, 2023 10:53 AM > > >>> To: Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Kinney, > > >>> Michael D <michael.d.kinney@intel.com> > > >>> Cc: Ni, Ray <ray.ni@intel.com>; Leif Lindholm > > <quic_llindhol@quicinc.com>; > > >>> Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar > > >>> <sami.mujawar@arm.com>; Michael Kubacki > > >>> <mikuback@linux.microsoft.com>; Sean Brogan > > >>> <sean.brogan@microsoft.com> > > >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > > >>> Capabilities With Page Table Attributes > > >>> > > >>> On 5/1/2023 10:50 AM, Ard Biesheuvel wrote: > > >>>> On Mon, 1 May 2023 at 19:49, Michael D Kinney > > >>>> <michael.d.kinney@intel.com> wrote: > > >>>>> > > >>>>> Hi, > > >>>>> > > >>>>> These UEFI Memory Map, GCD, and Page Table interactions can be > > >>> complex and I > > >>>>> agree there are some UEFI/PI spec clarifications that may help. > > >>>>> > > >>>>> Ray hosts a TianoCore design meeting when needed. Do you think a > > >>> meeting with > > >>>>> an open discussion on these topics would help, or do we prefer to > > >>> continue with > > >>>>> email discussions? > > >>>>> > > >>>> > > >>>> I'll gladly join a call to discuss this if we can find a timeslot that > > >>>> works for everyone in terms of time zone. (I'm on Paris time) > > >>> > > >>> I also think a call would be great, I certainly would benefit from > > >>> learning more here :). I'm sure various members of my team would > > >>> be interested in joining, happy to be flexible on timeslot (we are > > >>> generally in PST). > > >>> > > >>> Thanks, > > >>> Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-09 6:59 ` Ard Biesheuvel @ 2023-05-09 14:59 ` Oliver Smith-Denny 2023-05-10 16:10 ` Taylor Beebe 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-05-09 14:59 UTC (permalink / raw) To: Ard Biesheuvel, Kinney, Michael D Cc: Ni, Ray, devel@edk2.groups.io, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: > On Tue, 9 May 2023 at 04:04, Kinney, Michael D > <michael.d.kinney@intel.com> wrote: >> >> I would prefer next week as well. >> >> Mike >> > > Next week, i can only do Wednesday. The week after (22-26), the time > slot works for me on any day of the week. > Weds works from our side, the week after also works perfectly well any day. Thanks for the flexibility and willingness to meet. For reference for this specific patch, this bz may help cache in some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The mail links are largely dead, of course, but can be found on other mailing list retention sites (maybe in the future we will have PRs and discussions to reference :). Thanks, Oliver ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-09 14:59 ` Oliver Smith-Denny @ 2023-05-10 16:10 ` Taylor Beebe 2023-05-16 2:53 ` Ni, Ray 0 siblings, 1 reply; 26+ messages in thread From: Taylor Beebe @ 2023-05-10 16:10 UTC (permalink / raw) To: devel, osde, Ard Biesheuvel, Kinney, Michael D Cc: Ni, Ray, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan Can we schedule the meeting for Wednesday 5/17? I will be out the following week and would like to attend. Thanks :) On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: > On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >> <michael.d.kinney@intel.com> wrote: >>> >>> I would prefer next week as well. >>> >>> Mike >>> >> >> Next week, i can only do Wednesday. The week after (22-26), the time >> slot works for me on any day of the week. >> > > Weds works from our side, the week after also works perfectly well > any day. Thanks for the flexibility and willingness to meet. > > For reference for this specific patch, this bz may help cache in > some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The > mail links are largely dead, of course, but can be found on other > mailing list retention sites (maybe in the future we will have PRs > and discussions to reference :). > > Thanks, > Oliver > > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-10 16:10 ` Taylor Beebe @ 2023-05-16 2:53 ` Ni, Ray 2023-05-16 17:11 ` Oliver Smith-Denny 0 siblings, 1 reply; 26+ messages in thread From: Ni, Ray @ 2023-05-16 2:53 UTC (permalink / raw) To: devel@edk2.groups.io, osde@linux.microsoft.com, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan All, Can you check if the meeting time is ok for you? It will be in this week: * PDT Wednesday 07:00 * Paris Wednesday 16:00 * Shanghai Wednesday 22:00 ________________________________________ From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor Beebe <t@taylorbeebe.com> Sent: Thursday, May 11, 2023 0:10 To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; Kinney, Michael D Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; Sean Brogan Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes Can we schedule the meeting for Wednesday 5/17? I will be out the following week and would like to attend. Thanks :) On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: > On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >> <michael.d.kinney@intel.com> wrote: >>> >>> I would prefer next week as well. >>> >>> Mike >>> >> >> Next week, i can only do Wednesday. The week after (22-26), the time >> slot works for me on any day of the week. >> > > Weds works from our side, the week after also works perfectly well > any day. Thanks for the flexibility and willingness to meet. > > For reference for this specific patch, this bz may help cache in > some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The > mail links are largely dead, of course, but can be found on other > mailing list retention sites (maybe in the future we will have PRs > and discussions to reference :). > > Thanks, > Oliver > > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-16 2:53 ` Ni, Ray @ 2023-05-16 17:11 ` Oliver Smith-Denny 2023-05-17 7:14 ` Ni, Ray 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-05-16 17:11 UTC (permalink / raw) To: Ni, Ray, devel@edk2.groups.io, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan Hi Ray, That works from our side, thanks for setting up the meeting! Oliver On 5/15/2023 7:53 PM, Ni, Ray wrote: > All, > Can you check if the meeting time is ok for you? > > It will be in this week: > * PDT Wednesday 07:00 > * Paris Wednesday 16:00 > * Shanghai Wednesday 22:00 > > ________________________________________ > From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor Beebe <t@taylorbeebe.com> > Sent: Thursday, May 11, 2023 0:10 > To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; Kinney, Michael D > Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; Sean Brogan > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes > > Can we schedule the meeting for Wednesday 5/17? I will be out the > following week and would like to attend. > > Thanks :) > > On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: >> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >>> <michael.d.kinney@intel.com> wrote: >>>> >>>> I would prefer next week as well. >>>> >>>> Mike >>>> >>> >>> Next week, i can only do Wednesday. The week after (22-26), the time >>> slot works for me on any day of the week. >>> >> >> Weds works from our side, the week after also works perfectly well >> any day. Thanks for the flexibility and willingness to meet. >> >> For reference for this specific patch, this bz may help cache in >> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The >> mail links are largely dead, of course, but can be found on other >> mailing list retention sites (maybe in the future we will have PRs >> and discussions to reference :). >> >> Thanks, >> Oliver >> >> >> >> >> > > > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-16 17:11 ` Oliver Smith-Denny @ 2023-05-17 7:14 ` Ni, Ray 2023-06-02 2:24 ` Michael Kubacki 0 siblings, 1 reply; 26+ messages in thread From: Ni, Ray @ 2023-05-17 7:14 UTC (permalink / raw) To: Oliver Smith-Denny, devel@edk2.groups.io, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan [-- Attachment #1: Type: text/plain, Size: 2972 bytes --] I created one event in https://edk2.groups.io/g/devel/calendar. Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4-8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27-3d06c576cc19%22%7d The ICS file is also attached. > -----Original Message----- > From: Oliver Smith-Denny <osde@linux.microsoft.com> > Sent: Wednesday, May 17, 2023 1:12 AM > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel > <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; > t@taylorbeebe.com > Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan > <sean.brogan@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities > With Page Table Attributes > > Hi Ray, > > That works from our side, thanks for setting up the meeting! > > Oliver > > On 5/15/2023 7:53 PM, Ni, Ray wrote: > > All, > > Can you check if the meeting time is ok for you? > > > > It will be in this week: > > * PDT Wednesday 07:00 > > * Paris Wednesday 16:00 > > * Shanghai Wednesday 22:00 > > > > ________________________________________ > > From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor Beebe > <t@taylorbeebe.com> > > Sent: Thursday, May 11, 2023 0:10 > > To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; Kinney, > Michael D > > Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; > Sean Brogan > > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities With Page Table Attributes > > > > Can we schedule the meeting for Wednesday 5/17? I will be out the > > following week and would like to attend. > > > > Thanks :) > > > > On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: > >> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: > >>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D > >>> <michael.d.kinney@intel.com> wrote: > >>>> > >>>> I would prefer next week as well. > >>>> > >>>> Mike > >>>> > >>> > >>> Next week, i can only do Wednesday. The week after (22-26), the time > >>> slot works for me on any day of the week. > >>> > >> > >> Weds works from our side, the week after also works perfectly well > >> any day. Thanks for the flexibility and willingness to meet. > >> > >> For reference for this specific patch, this bz may help cache in > >> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The > >> mail links are largely dead, of course, but can be found on other > >> mailing list retention sites (maybe in the future we will have PRs > >> and discussions to reference :). > >> > >> Thanks, > >> Oliver > >> > >> > >> > >> > >> > > > > > > > > > > > > [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: UEFI Memory Map GCD Page Table discussion - ARMX86.ics --] [-- Type: text/calendar; name="UEFI Memory Map GCD Page Table discussion - ARMX86.ics", Size: 51448 bytes --] BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN VERSION:2.0 METHOD:REQUEST X-MS-OLK-FORCEINSPECTOROPEN:TRUE BEGIN:VTIMEZONE TZID:China Standard Time BEGIN:STANDARD DTSTART:16010101T000000 TZOFFSETFROM:+0800 TZOFFSETTO:+0800 END:STANDARD END:VTIMEZONE BEGIN:VEVENT CLASS:PUBLIC CREATED:20230517T070852Z DESCRIPTION: \n____________________________________________________________ ____________________ \nMicrosoft Teams meeting \nJoin on your computer\, m obile app or room device \nClick here to join the meeting <https://teams.m icrosoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYT hkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4- 8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27-3d06c576cc19 %22%7d> \nMeeting ID: 256 188 860 359 \nPasscode: yJZsmm \nDownload Teams <https://www.microsoft.com/en-us/microsoft-teams/download-app> | Join on the web <https://www.microsoft.com/microsoft-teams/join-a-meeting> \nJoin with a video conferencing device \nteams@conf.intel.com \nVideo Conferenc e ID: 113 587 139 9 \nAlternate VTC instructions <https://conf.intel.com/t eams/?conf=1135871399&ivr=teams&d=conf.intel.com&test=test_call> \nOr cal l in (audio only) \n+86 10 5697 1340\,\,703118725# <tel:+861056971340\,\,7 03118725#> China\, 北京 (Beijing) \nPhone Conference ID: 703 118 725# \nFind a local number <https://dialin.teams.microsoft.com/d195d438-2daa-4 20e-b9ea-da26f9d1d6d5?id=703118725> | Reset PIN <https://dialin.teams.mic rosoft.com/usp/pstnconferencing> \nLearn More <https://aka.ms/JoinTeamsMe eting> | Meeting options <https://teams.microsoft.com/meetingOptions/?org anizerId=55d36a50-78be-4ced-bc27-3d06c576cc19&tenantId=46c98d88-e344-4ed4- 8496-4ed7712e255d&threadId=19_meeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThk NGQ0ZWYyMDZh@thread.v2&messageId=0&language=en-US> \n____________________ ____________________________________________________________ \n \n DTEND;TZID="China Standard Time":20230517T230000 DTSTAMP:20230517T070852Z DTSTART;TZID="China Standard Time":20230517T220000 LAST-MODIFIED:20230517T070852Z LOCATION:Microsoft Teams Meeting ORGANIZER;CN="Ni, Ray":mailto:ray.ni@intel.com PRIORITY:5 SEQUENCE:0 SUMMARY;LANGUAGE=en-us:UEFI Memory Map\, GCD\, Page Table discussion - ARM/ X86 TRANSP:OPAQUE UID:040000008200E00074C5B7101A82E0080000000020C8B5925882D901000000000000000 01000000043BF7D9269E0E24899EAE72E7F953601 X-ALT-DESC;FMTTYPE=text/html:\n<html xmlns:v="urn:schemas-microsoft-com:vml " xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-m icrosoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/200 4/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 15"><m eta name=Originator content="Microsoft Word 15"><link rel=File-List href=" cid:filelist.xml@01D98258.E5F06450"><!--[if gte mso 9]><xml>\n<o:OfficeDoc umentSettings>\n<o:AllowPNG/>\n</o:OfficeDocumentSettings>\n</xml><![endif ]--><!--[if gte mso 9]><xml>\n<w:WordDocument>\n<w:SpellingState>Clean</w: SpellingState>\n<w:GrammarState>Clean</w:GrammarState>\n<w:TrackMoves/>\n< w:TrackFormatting/>\n<w:EnvelopeVis/>\n<w:PunctuationKerning/>\n<w:Validat eAgainstSchemas/>\n<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>\n<w:Igno reMixedContent>false</w:IgnoreMixedContent>\n<w:AlwaysShowPlaceholderText> false</w:AlwaysShowPlaceholderText>\n<w:DoNotPromoteQF/>\n<w:LidThemeOther >EN-US</w:LidThemeOther>\n<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>\n<w:Lid ThemeComplexScript>X-NONE</w:LidThemeComplexScript>\n<w:Compatibility>\n<w :BreakWrappedTables/>\n<w:SnapToGridInCell/>\n<w:WrapTextWithPunct/>\n<w:U seAsianBreakRules/>\n<w:DontGrowAutofit/>\n<w:SplitPgBreakAndParaMark/>\n< w:EnableOpenTypeKerning/>\n<w:DontFlipMirrorIndents/>\n<w:OverrideTableSty leHps/>\n<w:UseFELayout/>\n</w:Compatibility>\n<m:mathPr>\n<m:mathFont m:v al="Cambria Math"/>\n<m:brkBin m:val="before"/>\n<m:brkBinSub m:val="-\ ;-"/>\n<m:smallFrac m:val="off"/>\n<m:dispDef/>\n<m:lMargin m:val="0"/>\n< m:rMargin m:val="0"/>\n<m:defJc m:val="centerGroup"/>\n<m:wrapIndent m:val ="1440"/>\n<m:intLim m:val="subSup"/>\n<m:naryLim m:val="undOvr"/>\n</m:ma thPr></w:WordDocument>\n</xml><![endif]--><!--[if gte mso 9]><xml>\n<w:Lat entStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden=" false" DefQFormat="false" DefPriority="99" LatentStyleCount="376">\n<w:Lsd Exception Locked="false" Priority="0" QFormat="true" Name="Normal"/>\n<w:L sdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>\ n<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenU sed="true" QFormat="true" Name="heading 2"/>\n<w:LsdException Locked="fals e" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Nam e="heading 3"/>\n<w:LsdException Locked="false" Priority="9" SemiHidden="t rue" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>\n<w:LsdExcept ion Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QF ormat="true" Name="heading 5"/>\n<w:LsdException Locked="false" Priority=" 9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6" />\n<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWh enUsed="true" QFormat="true" Name="heading 7"/>\n<w:LsdException Locked="f alse" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>\n<w:LsdException Locked="false" Priority="9" SemiHidden ="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="index 2"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhi deWhenUsed="true" Name="index 3"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="index 4"/>\n<w:LsdException Locked= "false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tr ue" Name="index 7"/>\n<w:LsdException Locked="false" SemiHidden="true" Unh ideWhenUsed="true" Name="index 8"/>\n<w:LsdException Locked="false" SemiHi dden="true" UnhideWhenUsed="true" Name="index 9"/>\n<w:LsdException Locked ="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1 "/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" Unhide WhenUsed="true" Name="toc 2"/>\n<w:LsdException Locked="false" Priority="3 9" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name ="toc 4"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/>\n<w:LsdException Locked="false" Prio rity="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/>\n<w:LsdEx ception Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="tru e" Name="toc 7"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden ="true" UnhideWhenUsed="true" Name="toc 8"/>\n<w:LsdException Locked="fals e" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Normal Indent"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="footnote text"/>\n<w:LsdException Locked="false" Se miHidden="true" UnhideWhenUsed="true" Name="annotation text"/>\n<w:LsdExce ption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header" />\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideW henUsed="true" Name="index heading"/>\n<w:LsdException Locked="false" Prio rity="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="cap tion"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed=" true" Name="table of figures"/>\n<w:LsdException Locked="false" SemiHidden ="true" UnhideWhenUsed="true" Name="envelope address"/>\n<w:LsdException L ocked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope retur n"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="footnote reference"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="annotation reference"/>\n<w:LsdExceptio n Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number "/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true " Name="page number"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="endnote reference"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/>\n<w:Ls dException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="ta ble of authorities"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="macro"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="toa heading"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="List Number"/>\n<w:LsdException Locked="false" SemiHidden=" true" UnhideWhenUsed="true" Name="List 2"/>\n<w:LsdException Locked="false " SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="List 5"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="List Bullet 2"/>\n<w:LsdException Locked="false" SemiHidde n="true" UnhideWhenUsed="true" Name="List Bullet 3"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> \n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" N ame="List Bullet 5"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="List Number 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List N umber 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="List Number 5"/>\n<w:LsdException Locked="false" Priority=" 10" QFormat="true" Name="Title"/>\n<w:LsdException Locked="false" SemiHidd en="true" UnhideWhenUsed="true" Name="Closing"/>\n<w:LsdException Locked=" false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/>\n<w:LsdE xception Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="tru e" Name="Default Paragraph Font"/>\n<w:LsdException Locked="false" SemiHid den="true" UnhideWhenUsed="true" Name="Body Text"/>\n<w:LsdException Locke d="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/ >\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="List Continue 2"/>\n<w:LsdException Locked="fal se" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/>\n<w:L sdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="L ist Continue 4"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhide WhenUsed="true" Name="List Continue 5"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="Message Header"/>\n<w:LsdExce ption Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>\n<w:Ls dException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Sa lutation"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Date"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Note Heading"/>\n<w:LsdException Locked="false" SemiHidden ="true" UnhideWhenUsed="true" Name="Body Text 2"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/>\n<w: LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name=" Body Text Indent 2"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="Body Text Indent 3"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hype rlink"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed= "true" Name="FollowedHyperlink"/>\n<w:LsdException Locked="false" Priority ="22" QFormat="true" Name="Strong"/>\n<w:LsdException Locked="false" Prior ity="20" QFormat="true" Name="Emphasis"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/>\n<w:LsdExcep tion Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Te xt"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tr ue" Name="E-mail Signature"/>\n<w:LsdException Locked="false" SemiHidden=" true" UnhideWhenUsed="true" Name="HTML Top of Form"/>\n<w:LsdException Loc ked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of F orm"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="t rue" Name="Normal (Web)"/>\n<w:LsdException Locked="false" SemiHidden="tru e" UnhideWhenUsed="true" Name="HTML Acronym"/>\n<w:LsdException Locked="fa lse" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTM L Cite"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed ="true" Name="HTML Code"/>\n<w:LsdException Locked="false" SemiHidden="tru e" UnhideWhenUsed="true" Name="HTML Definition"/>\n<w:LsdException Locked= "false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/>\n<w :LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name= "HTML Preformatted"/>\n<w:LsdException Locked="false" SemiHidden="true" Un hideWhenUsed="true" Name="HTML Sample"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML V ariable"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="Normal Table"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="annotation subject"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Outline List 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhi deWhenUsed="true" Name="Outline List 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/>\n<w:LsdExc eption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUs ed="true" Name="Table Simple 2"/>\n<w:LsdException Locked="false" SemiHidd en="true" UnhideWhenUsed="true" Name="Table Simple 3"/>\n<w:LsdException L ocked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="Table Classic 2"/>\n<w:LsdException Locked="false" SemiHidden="tr ue" UnhideWhenUsed="true" Name="Table Classic 3"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/>\ n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Na me="Table Colorful 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/>\n<w:LsdException Locked="f alse" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/>\n< w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name ="Table Columns 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Unh ideWhenUsed="true" Name="Table Columns 2"/>\n<w:LsdException Locked="false " SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tab le Columns 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWh enUsed="true" Name="Table Columns 5"/>\n<w:LsdException Locked="false" Sem iHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/>\n<w:LsdExceptio n Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="tru e" Name="Table Grid 3"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/>\n<w:LsdException Locked="fals e" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUse d="true" Name="Table Grid 7"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="Table Grid 8"/>\n<w:LsdException Locked ="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/>\n<w :LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name= "Table List 2"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideW henUsed="true" Name="Table List 3"/>\n<w:LsdException Locked="false" SemiH idden="true" UnhideWhenUsed="true" Name="Table List 4"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5" />\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/>\n<w:LsdException Locked="false" SemiHidden="true" U nhideWhenUsed="true" Name="Table List 7"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/>\n<w:LsdExce ption Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3 D effects 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhe nUsed="true" Name="Table 3D effects 2"/>\n<w:LsdException Locked="false" S emiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/>\n<w:Lsd Exception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tab le Contemporary"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="Table Elegant"/>\n<w:LsdException Locked="false" Se miHidden="true" UnhideWhenUsed="true" Name="Table Professional"/>\n<w:LsdE xception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Tabl e Subtle 1"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhen Used="true" Name="Table Subtle 2"/>\n<w:LsdException Locked="false" SemiHi dden="true" UnhideWhenUsed="true" Name="Table Web 1"/>\n<w:LsdException Lo cked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/>\ n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Na me="Table Web 3"/>\n<w:LsdException Locked="false" SemiHidden="true" Unhid eWhenUsed="true" Name="Balloon Text"/>\n<w:LsdException Locked="false" Pri ority="39" Name="Table Grid"/>\n<w:LsdException Locked="false" SemiHidden= "true" UnhideWhenUsed="true" Name="Table Theme"/>\n<w:LsdException Locked= "false" SemiHidden="true" Name="Placeholder Text"/>\n<w:LsdException Locke d="false" Priority="1" QFormat="true" Name="No Spacing"/>\n<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>\n<w:LsdException Lock ed="false" Priority="61" Name="Light List"/>\n<w:LsdException Locked="fals e" Priority="62" Name="Light Grid"/>\n<w:LsdException Locked="false" Prior ity="63" Name="Medium Shading 1"/>\n<w:LsdException Locked="false" Priorit y="64" Name="Medium Shading 2"/>\n<w:LsdException Locked="false" Priority= "65" Name="Medium List 1"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>\n<w:LsdException Locked="false" Priority="67" Name= "Medium Grid 1"/>\n<w:LsdException Locked="false" Priority="68" Name="Medi um Grid 2"/>\n<w:LsdException Locked="false" Priority="69" Name="Medium Gr id 3"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List"/>\n <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>\n<w :LsdException Locked="false" Priority="72" Name="Colorful List"/>\n<w:LsdE xception Locked="false" Priority="73" Name="Colorful Grid"/>\n<w:LsdExcept ion Locked="false" Priority="60" Name="Light Shading Accent 1"/>\n<w:LsdEx ception Locked="false" Priority="61" Name="Light List Accent 1"/>\n<w:LsdE xception Locked="false" Priority="62" Name="Light Grid Accent 1"/>\n<w:Lsd Exception Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>\ n<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accen t 1"/>\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 A ccent 1"/>\n<w:LsdException Locked="false" SemiHidden="true" Name="Revisio n"/>\n<w:LsdException Locked="false" Priority="34" QFormat="true" Name="Li st Paragraph"/>\n<w:LsdException Locked="false" Priority="29" QFormat="tru e" Name="Quote"/>\n<w:LsdException Locked="false" Priority="30" QFormat="t rue" Name="Intense Quote"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>\n<w:LsdException Locked="false" Priority=" 67" Name="Medium Grid 1 Accent 1"/>\n<w:LsdException Locked="false" Priori ty="68" Name="Medium Grid 2 Accent 1"/>\n<w:LsdException Locked="false" Pr iority="69" Name="Medium Grid 3 Accent 1"/>\n<w:LsdException Locked="false " Priority="70" Name="Dark List Accent 1"/>\n<w:LsdException Locked="false " Priority="71" Name="Colorful Shading Accent 1"/>\n<w:LsdException Locked ="false" Priority="72" Name="Colorful List Accent 1"/>\n<w:LsdException Lo cked="false" Priority="73" Name="Colorful Grid Accent 1"/>\n<w:LsdExceptio n Locked="false" Priority="60" Name="Light Shading Accent 2"/>\n<w:LsdExce ption Locked="false" Priority="61" Name="Light List Accent 2"/>\n<w:LsdExc eption Locked="false" Priority="62" Name="Light Grid Accent 2"/>\n<w:LsdEx ception Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>\n< w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Acc ent 2"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="67" Name="Medium Gr id 1 Accent 2"/>\n<w:LsdException Locked="false" Priority="68" Name="Mediu m Grid 2 Accent 2"/>\n<w:LsdException Locked="false" Priority="69" Name="M edium Grid 3 Accent 2"/>\n<w:LsdException Locked="false" Priority="70" Nam e="Dark List Accent 2"/>\n<w:LsdException Locked="false" Priority="71" Nam e="Colorful Shading Accent 2"/>\n<w:LsdException Locked="false" Priority=" 72" Name="Colorful List Accent 2"/>\n<w:LsdException Locked="false" Priori ty="73" Name="Colorful Grid Accent 2"/>\n<w:LsdException Locked="false" Pr iority="60" Name="Light Shading Accent 3"/>\n<w:LsdException Locked="false " Priority="61" Name="Light List Accent 3"/>\n<w:LsdException Locked="fals e" Priority="62" Name="Light Grid Accent 3"/>\n<w:LsdException Locked="fal se" Priority="63" Name="Medium Shading 1 Accent 3"/>\n<w:LsdException Lock ed="false" Priority="64" Name="Medium Shading 2 Accent 3"/>\n<w:LsdExcepti on Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>\n<w:LsdExc eption Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>\n<w:Ls dException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>\n< w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/ >\n<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>\n<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>\n<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>\n<w:LsdException Locked="false" Priority="73" Name="Color ful Grid Accent 3"/>\n<w:LsdException Locked="false" Priority="60" Name="L ight Shading Accent 4"/>\n<w:LsdException Locked="false" Priority="61" Nam e="Light List Accent 4"/>\n<w:LsdException Locked="false" Priority="62" Na me="Light Grid Accent 4"/>\n<w:LsdException Locked="false" Priority="63" N ame="Medium Shading 1 Accent 4"/>\n<w:LsdException Locked="false" Priority ="64" Name="Medium Shading 2 Accent 4"/>\n<w:LsdException Locked="false" P riority="65" Name="Medium List 1 Accent 4"/>\n<w:LsdException Locked="fals e" Priority="66" Name="Medium List 2 Accent 4"/>\n<w:LsdException Locked=" false" Priority="67" Name="Medium Grid 1 Accent 4"/>\n<w:LsdException Lock ed="false" Priority="68" Name="Medium Grid 2 Accent 4"/>\n<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>\n<w:LsdExcept ion Locked="false" Priority="70" Name="Dark List Accent 4"/>\n<w:LsdExcept ion Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>\n<w:Ls dException Locked="false" Priority="72" Name="Colorful List Accent 4"/>\n< w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/ >\n<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>\n<w:LsdException Locked="false" Priority="61" Name="Light List Accen t 5"/>\n<w:LsdException Locked="false" Priority="62" Name="Light Grid Acce nt 5"/>\n<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>\n<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>\n<w:LsdException Locked="false" Priority="65" Name=" Medium List 1 Accent 5"/>\n<w:LsdException Locked="false" Priority="66" Na me="Medium List 2 Accent 5"/>\n<w:LsdException Locked="false" Priority="67 " Name="Medium Grid 1 Accent 5"/>\n<w:LsdException Locked="false" Priority ="68" Name="Medium Grid 2 Accent 5"/>\n<w:LsdException Locked="false" Prio rity="69" Name="Medium Grid 3 Accent 5"/>\n<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>\n<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>\n<w:LsdException Locked=" false" Priority="72" Name="Colorful List Accent 5"/>\n<w:LsdException Lock ed="false" Priority="73" Name="Colorful Grid Accent 5"/>\n<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>\n<w:LsdExcept ion Locked="false" Priority="61" Name="Light List Accent 6"/>\n<w:LsdExcep tion Locked="false" Priority="62" Name="Light Grid Accent 6"/>\n<w:LsdExce ption Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>\n<w: LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6" />\n<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accen t 6"/>\n<w:LsdException Locked="false" Priority="66" Name="Medium List 2 A ccent 6"/>\n<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>\n<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="69" Name="Med ium Grid 3 Accent 6"/>\n<w:LsdException Locked="false" Priority="70" Name= "Dark List Accent 6"/>\n<w:LsdException Locked="false" Priority="71" Name= "Colorful Shading Accent 6"/>\n<w:LsdException Locked="false" Priority="72 " Name="Colorful List Accent 6"/>\n<w:LsdException Locked="false" Priority ="73" Name="Colorful Grid Accent 6"/>\n<w:LsdException Locked="false" Prio rity="19" QFormat="true" Name="Subtle Emphasis"/>\n<w:LsdException Locked= "false" Priority="21" QFormat="true" Name="Intense Emphasis"/>\n<w:LsdExce ption Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/ >\n<w:LsdException Locked="false" Priority="32" QFormat="true" Name="Inten se Reference"/>\n<w:LsdException Locked="false" Priority="33" QFormat="tru e" Name="Book Title"/>\n<w:LsdException Locked="false" Priority="37" SemiH idden="true" UnhideWhenUsed="true" Name="Bibliography"/>\n<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QForm at="true" Name="TOC Heading"/>\n<w:LsdException Locked="false" Priority="4 1" Name="Plain Table 1"/>\n<w:LsdException Locked="false" Priority="42" Na me="Plain Table 2"/>\n<w:LsdException Locked="false" Priority="43" Name="P lain Table 3"/>\n<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>\n<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>\n<w:LsdException Locked="false" Priority="40" Name="Grid Table Light "/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light "/>\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>\n< w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>\n<w:LsdE xception Locked="false" Priority="49" Name="Grid Table 4"/>\n<w:LsdExcepti on Locked="false" Priority="50" Name="Grid Table 5 Dark"/>\n<w:LsdExceptio n Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>\n<w:LsdExcep tion Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>\n<w:LsdEx ception Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/>\ n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1" />\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Acc ent 1"/>\n<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>\n<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/>\n<w:LsdException Locked="false" P riority="46" Name="Grid Table 1 Light Accent 2"/>\n<w:LsdException Locked= "false" Priority="47" Name="Grid Table 2 Accent 2"/>\n<w:LsdException Lock ed="false" Priority="48" Name="Grid Table 3 Accent 2"/>\n<w:LsdException L ocked="false" Priority="49" Name="Grid Table 4 Accent 2"/>\n<w:LsdExceptio n Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>\n<w:Lsd Exception Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colo rful Accent 2"/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/>\n<w:LsdException Locked="false" Priority="47" Na me="Grid Table 2 Accent 3"/>\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>\n<w:LsdException Locked="false" Priority=" 49" Name="Grid Table 4 Accent 3"/>\n<w:LsdException Locked="false" Priorit y="50" Name="Grid Table 5 Dark Accent 3"/>\n<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/>\n<w:LsdException Lo cked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/>\n<w:Lsd Exception Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/ >\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>\n<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Acce nt 4"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 A ccent 4"/>\n<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>\n<w:LsdException Locked="false" Priority="51" Name="Gri d Table 6 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="5 2" Name="Grid Table 7 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/>\n<w:LsdException Locke d="false" Priority="47" Name="Grid Table 2 Accent 5"/>\n<w:LsdException Lo cked="false" Priority="48" Name="Grid Table 3 Accent 5"/>\n<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>\n<w:LsdExcept ion Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>\n<w:L sdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accen t 5"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Co lorful Accent 5"/>\n<w:LsdException Locked="false" Priority="46" Name="Gri d Table 1 Light Accent 6"/>\n<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="4 8" Name="Grid Table 3 Accent 6"/>\n<w:LsdException Locked="false" Priority ="49" Name="Grid Table 4 Accent 6"/>\n<w:LsdException Locked="false" Prior ity="50" Name="Grid Table 5 Dark Accent 6"/>\n<w:LsdException Locked="fals e" Priority="51" Name="Grid Table 6 Colorful Accent 6"/>\n<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/>\n<w:L sdException Locked="false" Priority="46" Name="List Table 1 Light"/>\n<w:L sdException Locked="false" Priority="47" Name="List Table 2"/>\n<w:LsdExce ption Locked="false" Priority="48" Name="List Table 3"/>\n<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>\n<w:LsdException Locked ="false" Priority="50" Name="List Table 5 Dark"/>\n<w:LsdException Locked= "false" Priority="51" Name="List Table 6 Colorful"/>\n<w:LsdException Lock ed="false" Priority="52" Name="List Table 7 Colorful"/>\n<w:LsdException L ocked="false" Priority="46" Name="List Table 1 Light Accent 1"/>\n<w:LsdEx ception Locked="false" Priority="47" Name="List Table 2 Accent 1"/>\n<w:Ls dException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>\n<w :LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>\ n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Acce nt 1"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 C olorful Accent 1"/>\n<w:LsdException Locked="false" Priority="52" Name="Li st Table 7 Colorful Accent 1"/>\n<w:LsdException Locked="false" Priority=" 46" Name="List Table 1 Light Accent 2"/>\n<w:LsdException Locked="false" P riority="47" Name="List Table 2 Accent 2"/>\n<w:LsdException Locked="false " Priority="48" Name="List Table 3 Accent 2"/>\n<w:LsdException Locked="fa lse" Priority="49" Name="List Table 4 Accent 2"/>\n<w:LsdException Locked= "false" Priority="50" Name="List Table 5 Dark Accent 2"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/>\n<w: LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Acce nt 2"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 L ight Accent 3"/>\n<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>\n<w:LsdException Locked="false" Priority="48" Name="Li st Table 3 Accent 3"/>\n<w:LsdException Locked="false" Priority="49" Name= "List Table 4 Accent 3"/>\n<w:LsdException Locked="false" Priority="50" Na me="List Table 5 Dark Accent 3"/>\n<w:LsdException Locked="false" Priority ="51" Name="List Table 6 Colorful Accent 3"/>\n<w:LsdException Locked="fal se" Priority="52" Name="List Table 7 Colorful Accent 3"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/>\n<w:Lsd Exception Locked="false" Priority="47" Name="List Table 2 Accent 4"/>\n<w: LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>\n <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/ >\n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Ac cent 4"/>\n<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority="52" Name=" List Table 7 Colorful Accent 4"/>\n<w:LsdException Locked="false" Priority ="46" Name="List Table 1 Light Accent 5"/>\n<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>\n<w:LsdException Locked="fal se" Priority="48" Name="List Table 3 Accent 5"/>\n<w:LsdException Locked=" false" Priority="49" Name="List Table 4 Accent 5"/>\n<w:LsdException Locke d="false" Priority="50" Name="List Table 5 Dark Accent 5"/>\n<w:LsdExcepti on Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/>\n< w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Ac cent 5"/>\n<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/>\n<w:LsdException Locked="false" Priority="47" Name="Lis t Table 2 Accent 6"/>\n<w:LsdException Locked="false" Priority="48" Name=" List Table 3 Accent 6"/>\n<w:LsdException Locked="false" Priority="49" Nam e="List Table 4 Accent 6"/>\n<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>\n<w:LsdException Locked="false" Priori ty="51" Name="List Table 6 Colorful Accent 6"/>\n<w:LsdException Locked="f alse" Priority="52" Name="List Table 7 Colorful Accent 6"/>\n<w:LsdExcepti on Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> \n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" N ame="Smart Hyperlink"/>\n<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/>\n<w:LsdException Locked="false" Sem iHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/>\n<w:LsdEx ception Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Link"/>\n</w:LatentStyles>\n</xml><![endif]--><style><!--\n/* Font Defini tions */\n@font-face\n {font-family:"Cambria Math"\;\n panose-1:2 4 5 3 5 4 6 3 2 4\;\n mso-font-charset:0\;\n mso-generic-font-family:roman\;\n mso -font-pitch:variable\;\n mso-font-signature:-536869121 1107305727 33554432 0 415 0\;}\n@font-face\n {font-family:DengXian\;\n panose-1:2 1 6 0 3 1 1 1 1 1\;\n mso-font-alt:\\7B49\\7EBF\;\n mso-font-charset:134\;\n mso-gene ric-font-family:auto\;\n mso-font-pitch:variable\;\n mso-font-signature:-1 610612033 953122042 22 0 262159 0\;}\n@font-face\n {font-family:Calibri\;\ n panose-1:2 15 5 2 2 2 4 3 2 4\;\n mso-font-charset:0\;\n mso-generic-fon t-family:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:-4697500 17 -1040178053 9 0 511 0\;}\n@font-face\n {font-family:"Segoe UI"\;\n pano se-1:2 11 5 2 4 2 4 2 2 3\;\n mso-font-charset:0\;\n mso-generic-font-fami ly:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:-469750017 -10 73683329 9 0 511 0\;}\n@font-face\n {font-family:"Microsoft JhengHei"\;\n panose-1:2 11 6 4 3 5 4 4 2 4\;\n mso-font-charset:136\;\n mso-generic-fon t-family:swiss\;\n mso-font-pitch:variable\;\n mso-font-signature:679 6846 72000 22 0 1048585 0\;}\n@font-face\n {font-family:"\\@Microsoft JhengHei" \;\n mso-font-charset:136\;\n mso-generic-font-family:swiss\;\n mso-font-p itch:variable\;\n mso-font-signature:679 684672000 22 0 1048585 0\;}\n@fon t-face\n {font-family:"Segoe UI Semibold"\;\n panose-1:2 11 7 2 4 2 4 2 2 3\;\n mso-font-charset:0\;\n mso-generic-font-family:swiss\;\n mso-font-pi tch:variable\;\n mso-font-signature:-469750017 -1073683329 9 0 511 0\;}\n@ font-face\n {font-family:"\\@DengXian"\;\n panose-1:2 1 6 0 3 1 1 1 1 1\;\ n mso-font-charset:134\;\n mso-generic-font-family:auto\;\n mso-font-pitch :variable\;\n mso-font-signature:-1610612033 953122042 22 0 262159 0\;}\n/ * Style Definitions */\np.MsoNormal\, li.MsoNormal\, div.MsoNormal\n {mso- style-unhide:no\;\n mso-style-qformat:yes\;\n mso-style-parent:""\;\n marg in:0in\;\n mso-pagination:widow-orphan\;\n font-size:11.0pt\;\n font-famil y:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-fareast- font-family:DengXian\;\n mso-hansi-font-family:Calibri\;\n mso-bidi-font-f amily:"Times New Roman"\;}\na:link\, span.MsoHyperlink\n {mso-style-noshow :yes\;\n mso-style-priority:99\;\n color:#0563C1\;\n text-decoration:under line\;\n text-underline:single\;}\na:visited\, span.MsoHyperlinkFollowed\n {mso-style-noshow:yes\;\n mso-style-priority:99\;\n color:#954F72\;\n tex t-decoration:underline\;\n text-underline:single\;}\nspan.EmailStyle17\n { mso-style-type:personal-compose\;\n mso-style-noshow:yes\;\n mso-style-unh ide:no\;\n mso-ansi-font-size:11.0pt\;\n mso-bidi-font-size:11.0pt\;\n fon t-family:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-f areast-font-family:DengXian\;\n mso-hansi-font-family:Calibri\;\n mso-bidi -font-family:"Times New Roman"\;\n color:windowtext\;}\nspan.SpellE\n {mso -style-name:""\;\n mso-spl-e:yes\;}\nspan.GramE\n {mso-style-name:""\;\n m so-gram-e:yes\;}\n.MsoChpDefault\n {mso-style-type:export-only\;\n mso-def ault-props:yes\;\n font-family:"Calibri"\,sans-serif\;\n mso-ascii-font-fa mily:Calibri\;\n mso-fareast-font-family:DengXian\;\n mso-hansi-font-famil y:Calibri\;\n mso-bidi-font-family:"Times New Roman"\;}\n@page WordSection 1\n {size:8.5in 11.0in\;\n margin:1.0in 1.0in 1.0in 1.0in\;\n mso-header-m argin:.5in\;\n mso-footer-margin:.5in\;\n mso-paper-source:0\;}\ndiv.WordS ection1\n {page:WordSection1\;}\n--></style><!--[if gte mso 10]><style>/* Style Definitions */\ntable.MsoNormalTable\n {mso-style-name:"Table Normal "\;\n mso-tstyle-rowband-size:0\;\n mso-tstyle-colband-size:0\;\n mso-styl e-noshow:yes\;\n mso-style-priority:99\;\n mso-style-parent:""\;\n mso-pad ding-alt:0in 5.4pt 0in 5.4pt\;\n mso-para-margin:0in\;\n mso-pagination:wi dow-orphan\;\n font-size:11.0pt\;\n font-family:"Calibri"\,sans-serif\;\n mso-ascii-font-family:Calibri\;\n mso-hansi-font-family:Calibri\;\n mso-bi di-font-family:"Times New Roman"\;}\n</style><![endif]--><!--[if gte mso 9 ]><xml>\n<o:shapedefaults v:ext="edit" spidmax="1026" />\n</xml><![endif]- -><!--[if gte mso 9]><xml>\n<o:shapelayout v:ext="edit">\n<o:idmap v:ext=" edit" data="1" />\n</o:shapelayout></xml><![endif]--></head><body lang=EN- US link="#0563C1" vlink="#954F72" style='tab-interval:.5in\;word-wrap:brea k-word'><div class=WordSection1><p class=MsoNormal><o:p> \;</o:p></p>< div><p class=MsoNormal><span style='mso-fareast-font-family:"Times New Rom an"\;color:#5F5F5F'>______________________________________________________ __________________________</span><span style='mso-fareast-font-family:"Tim es New Roman"'> <o:p></o:p></span></p></div><div><div style='margin-top:.2 5in\;margin-bottom:15.0pt'><p class=MsoNormal><span style='font-size:18.0p t\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Microsoft Teams meeting</span><span style='font-fam ily:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;col or:#252424'> <o:p></o:p></span></p></div><div style='margin-bottom:15.0pt' ><div><p class=MsoNormal><b><span style='font-size:10.5pt\;font-family:"Se goe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252 424'>Join on your computer\, mobile app or room <span class=GramE>device</ span></span></b><b><span style='font-family:"Segoe UI"\,sans-serif\;mso-fa reast-font-family:"Times New Roman"\;color:#252424'> <o:p></o:p></span></b ></p></div><p class=MsoNormal><span style='font-family:"Segoe UI"\,sans-se rif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'><a href="ht tps://teams.microsoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00M TdmLTlkZmUtYThkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d 88-e344-4ed4-8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27 -3d06c576cc19%22%7d" target="_blank"><span style='font-size:10.5pt\;font-f amily:"Segoe UI Semibold"\,sans-serif\;color:#6264A7'>Click here to join t he meeting</span></a> <o:p></o:p></span></p></div><div style='margin-top:1 5.0pt\;margin-bottom:15.0pt'><div style='margin-bottom:3.0pt'><p class=Mso Normal><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\; mso-fareast-font-family:"Times New Roman"\;color:#252424'>Meeting ID: </sp an><span style='font-size:12.0pt\;font-family:"Segoe UI"\,sans-serif\;mso- fareast-font-family:"Times New Roman"\;color:#252424'>256 188 860 359</spa n><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-f areast-font-family:"Times New Roman"\;color:#252424'> </span><span style=' font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Rom an"\;color:#252424'><br></span><span style='font-size:10.5pt\;font-family: "Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:# 252424'>Passcode: </span><span class=SpellE><span style='font-size:12.0pt\ ;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Ro man"\;color:#252424'>yJZsmm</span></span><span style='font-size:12.0pt\;fo nt-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman "\;color:#252424'> </span><span style='font-family:"Segoe UI"\,sans-serif\ ;mso-fareast-font-family:"Times New Roman"\;color:#252424'><o:p></o:p></sp an></p><div><p class=MsoNormal><span style='font-size:10.5pt\;font-family: "Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:# 252424'><a href="https://www.microsoft.com/en-us/microsoft-teams/download- app" target="_blank"><span style='color:#6264A7'>Download Teams</span></a> | <a href="https://www.microsoft.com/microsoft-teams/join-a-meeting" targ et="_blank"><span style='color:#6264A7'>Join on the web</span></a><o:p></o :p></span></p></div></div></div><div style='margin-bottom:3.0pt'><p class= MsoNormal><b><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-s erif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Join with a video conferencing <span class=GramE>device</span></span></b><span style ='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New R oman"\;color:#252424'> <o:p></o:p></span></p></div><div><p class=MsoNormal ><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fa reast-font-family:"Times New Roman"\;color:#252424'>teams@conf.intel.com < o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size: 10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Video Conference ID: </span><span style='font- size:12.0pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family:" Times New Roman"\;color:#252424'>113 587 139 9 </span><span style='font-fa mily:"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;co lor:#252424'><o:p></o:p></span></p></div><div style='margin-bottom:15.0pt' ><p class=MsoNormal><span style='font-size:10.5pt\;font-family:"Segoe UI"\ ,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'><a href="https://conf.intel.com/teams/?conf=1135871399&\;ivr=teams&\;d= conf.intel.com&\;test=test_call"><span style='color:#6264A7'>Alternate VTC instructions</span></a> <o:p></o:p></span></p></div><div style='margin -bottom:3.0pt'><div style='margin-bottom:3.0pt'><p class=MsoNormal><b><spa n style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast -font-family:"Times New Roman"\;color:#252424'>Or call in (audio only)</sp an></b><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-f amily:"Times New Roman"\;color:#252424'> <o:p></o:p></span></p></div><div style='margin-bottom:3.0pt'><p class=MsoNormal><span style='font-family:"S egoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#25 2424'><a href="tel:+861056971340\,\,703118725# "><span style='font-size:10 .5pt\;color:#6264A7'>+86 10 5697 1340\,\,703118725#</span></a> </span><spa n style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\;mso-fareast -font-family:"Times New Roman"\;color:#252424'> \; China\, </span><spa n lang=ZH-CN style='font-size:10.5pt\;font-family:"Microsoft JhengHei"\,sa ns-serif\;mso-bidi-font-family:"Microsoft JhengHei"\;color:#252424'>北京 </span><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans-serif\; mso-fareast-font-family:"Times New Roman"\;color:#252424'> (Beijing) </spa n><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-family :"Times New Roman"\;color:#252424'><o:p></o:p></span></p></div></div><p cl ass=MsoNormal><span style='font-size:10.5pt\;font-family:"Segoe UI"\,sans- serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>Phone Con ference ID: </span><span style='font-size:12.0pt\;font-family:"Segoe UI"\, sans-serif\;mso-fareast-font-family:"Times New Roman"\;color:#252424'>703 118 725# </span><span style='font-family:"Segoe UI"\,sans-serif\;mso-farea st-font-family:"Times New Roman"\;color:#252424'><o:p></o:p></span></p><di v style='margin-bottom:15.0pt'><p class=MsoNormal><span style='font-family :"Segoe UI"\,sans-serif\;mso-fareast-font-family:"Times New Roman"\;color: #252424'><a href="https://dialin.teams.microsoft.com/d195d438-2daa-420e-b9 ea-da26f9d1d6d5?id=703118725" target="_blank"><span style='font-size:10.5p t\;color:#6264A7'>Find a local number</span></a> | <a href="https://dialin .teams.microsoft.com/usp/pstnconferencing" target="_blank"><span style='fo nt-size:10.5pt\;color:#6264A7'>Reset PIN</span></a> <o:p></o:p></span></p> </div><div style='margin-top:15.0pt\;margin-bottom:.25in'><p class=MsoNorm al><span style='font-family:"Segoe UI"\,sans-serif\;mso-fareast-font-famil y:"Times New Roman"\;color:#252424'><a href="https://aka.ms/JoinTeamsMeeti ng" target="_blank"><span style='font-size:10.5pt\;color:#6264A7'>Learn Mo re</span></a> | <a href="https://teams.microsoft.com/meetingOptions/?organ izerId=55d36a50-78be-4ced-bc27-3d06c576cc19&\;tenantId=46c98d88-e344-4e d4-8496-4ed7712e255d&\;threadId=19_meeting_YTk4ZDU3YjItODkxZC00MTdmLTlk ZmUtYThkNGQ0ZWYyMDZh@thread.v2&\;messageId=0&\;language=en-US" targe t="_blank"><span style='font-size:10.5pt\;color:#6264A7'>Meeting options</ span></a> <o:p></o:p></span></p></div></div><div><p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"\;color:#5F5F5F'>_________ _______________________________________________________________________</s pan><span style='mso-fareast-font-family:"Times New Roman"'> </span><span style='mso-ascii-font-family:Calibri\;mso-fareast-font-family:"Times New R oman"\;mso-hansi-font-family:Calibri\;mso-bidi-font-family:Calibri'><o:p>< /o:p></span></p></div><p class=MsoNormal><o:p> \;</o:p></p></div></bod y></html> X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-DISALLOW-COUNTER:FALSE X-MS-OLK-AUTOFILLLOCATION:FALSE X-MS-OLK-CONFTYPE:0 END:VEVENT END:VCALENDAR ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-05-17 7:14 ` Ni, Ray @ 2023-06-02 2:24 ` Michael Kubacki 2023-06-02 2:42 ` Ni, Ray 0 siblings, 1 reply; 26+ messages in thread From: Michael Kubacki @ 2023-06-02 2:24 UTC (permalink / raw) To: Ni, Ray, Oliver Smith-Denny, devel@edk2.groups.io, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan Hi Ray, We found the last meeting to be very helpful. Can you please set up an agenda for an upcoming meeting to discuss what's happened since and next steps? If you're available, perhaps we could see if Wednesday next week at the same time would work? We'd also like to share how GitHub Projects [1] can be used to track future work in the memory protection work stream. We've talked about Projects for a while in the TianoCore Tools & CI working group and this looks like a great opportunity to try it out. A public project has been created in the TianoCore org [2]. I've placed some initial high-level pillars in the project at the moment. Projects can help break down larger complex items and show how the pieces fit together in a single place. It helps visualize who is working on what, when they roughly expect to complete it, and what pillars of memory protection work such as compatibility, testing, etc. are defined and how we're making progress toward them. In this meeting, we'd like to discuss how we can most effectively use it to collaborate in upcoming work areas. It is not meant to replace the mailing list for communication or change code review process but to organize and visualize agreed upon memory protection work items. Ideally, this will help track that the areas are covered we expect, simplify planning to intercept the changes in platforms, show how work items are connected, and enable new contributors to quickly see how they can contribute. [1] - https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects [2] - https://github.com/orgs/tianocore/projects/3 Thanks, Michael On 5/17/2023 3:14 AM, Ni, Ray wrote: > I created one event in https://edk2.groups.io/g/devel/calendar. > > Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup-join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZh%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4-8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27-3d06c576cc19%22%7d > > The ICS file is also attached. > > >> -----Original Message----- >> From: Oliver Smith-Denny <osde@linux.microsoft.com> >> Sent: Wednesday, May 17, 2023 1:12 AM >> To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel >> <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; >> t@taylorbeebe.com >> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel >> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; >> Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan >> <sean.brogan@microsoft.com> >> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities >> With Page Table Attributes >> >> Hi Ray, >> >> That works from our side, thanks for setting up the meeting! >> >> Oliver >> >> On 5/15/2023 7:53 PM, Ni, Ray wrote: >>> All, >>> Can you check if the meeting time is ok for you? >>> >>> It will be in this week: >>> * PDT Wednesday 07:00 >>> * Paris Wednesday 16:00 >>> * Shanghai Wednesday 22:00 >>> >>> ________________________________________ >>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor Beebe >> <t@taylorbeebe.com> >>> Sent: Thursday, May 11, 2023 0:10 >>> To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; Kinney, >> Michael D >>> Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; >> Sean Brogan >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >> Capabilities With Page Table Attributes >>> >>> Can we schedule the meeting for Wednesday 5/17? I will be out the >>> following week and would like to attend. >>> >>> Thanks :) >>> >>> On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: >>>> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >>>>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >>>>> <michael.d.kinney@intel.com> wrote: >>>>>> >>>>>> I would prefer next week as well. >>>>>> >>>>>> Mike >>>>>> >>>>> >>>>> Next week, i can only do Wednesday. The week after (22-26), the time >>>>> slot works for me on any day of the week. >>>>> >>>> >>>> Weds works from our side, the week after also works perfectly well >>>> any day. Thanks for the flexibility and willingness to meet. >>>> >>>> For reference for this specific patch, this bz may help cache in >>>> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The >>>> mail links are largely dead, of course, but can be found on other >>>> mailing list retention sites (maybe in the future we will have PRs >>>> and discussions to reference :). >>>> >>>> Thanks, >>>> Oliver >>>> >>>> >>>> >>>> >>>> >>> >>> >>> >>> >>> >>> ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-02 2:24 ` Michael Kubacki @ 2023-06-02 2:42 ` Ni, Ray 2023-06-02 3:09 ` Michael Kubacki 0 siblings, 1 reply; 26+ messages in thread From: Ni, Ray @ 2023-06-02 2:42 UTC (permalink / raw) To: Michael Kubacki, Oliver Smith-Denny, devel@edk2.groups.io, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan It's a good idea to have a focus area ("project") for everyone working together on the same problem. I see the benefit of having "project" is to align everyone's priority so the "project" can be done within a certain deadline. Let's talk more about following items in next meeting: 1. Alignment of the problem to solve 2. Alignment of the priority I am available at 10pm~11pm (GMT+8) next Wednesday night. Thanks, Ray > -----Original Message----- > From: Michael Kubacki <mikuback@linux.microsoft.com> > Sent: Friday, June 2, 2023 10:24 AM > To: Ni, Ray <ray.ni@intel.com>; Oliver Smith-Denny <osde@linux.microsoft.com>; > devel@edk2.groups.io; Ard Biesheuvel <ardb@kernel.org>; Kinney, Michael D > <michael.d.kinney@intel.com>; t@taylorbeebe.com > Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; Sean > Brogan <sean.brogan@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities > With Page Table Attributes > > Hi Ray, > > We found the last meeting to be very helpful. Can you please set up an > agenda for an upcoming meeting to discuss what's happened since and next > steps? > > If you're available, perhaps we could see if Wednesday next week at the > same time would work? > > We'd also like to share how GitHub Projects [1] can be used to track > future work in the memory protection work stream. We've talked about > Projects for a while in the TianoCore Tools & CI working group and this > looks like a great opportunity to try it out. A public project has been > created in the TianoCore org [2]. I've placed some initial high-level > pillars in the project at the moment. > > Projects can help break down larger complex items and show how the > pieces fit together in a single place. It helps visualize who is working > on what, when they roughly expect to complete it, and what pillars of > memory protection work such as compatibility, testing, etc. are defined > and how we're making progress toward them. In this meeting, we'd like to > discuss how we can most effectively use it to collaborate in upcoming > work areas. > > It is not meant to replace the mailing list for communication or change > code review process but to organize and visualize agreed upon memory > protection work items. Ideally, this will help track that the areas are > covered we expect, simplify planning to intercept the changes in > platforms, show how work items are connected, and enable new > contributors to quickly see how they can contribute. > > [1] - > https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning- > about-projects/about-projects > [2] - https://github.com/orgs/tianocore/projects/3 > > Thanks, > Michael > > On 5/17/2023 3:14 AM, Ni, Ray wrote: > > I created one event in https://edk2.groups.io/g/devel/calendar. > > > > Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup- > join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZ > h%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4-8496- > 4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27- > 3d06c576cc19%22%7d > > > > The ICS file is also attached. > > > > > >> -----Original Message----- > >> From: Oliver Smith-Denny <osde@linux.microsoft.com> > >> Sent: Wednesday, May 17, 2023 1:12 AM > >> To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel > >> <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; > >> t@taylorbeebe.com > >> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > >> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > >> Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan > >> <sean.brogan@microsoft.com> > >> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > Capabilities > >> With Page Table Attributes > >> > >> Hi Ray, > >> > >> That works from our side, thanks for setting up the meeting! > >> > >> Oliver > >> > >> On 5/15/2023 7:53 PM, Ni, Ray wrote: > >>> All, > >>> Can you check if the meeting time is ok for you? > >>> > >>> It will be in this week: > >>> * PDT Wednesday 07:00 > >>> * Paris Wednesday 16:00 > >>> * Shanghai Wednesday 22:00 > >>> > >>> ________________________________________ > >>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor > Beebe > >> <t@taylorbeebe.com> > >>> Sent: Thursday, May 11, 2023 0:10 > >>> To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; > Kinney, > >> Michael D > >>> Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; > >> Sean Brogan > >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >> Capabilities With Page Table Attributes > >>> > >>> Can we schedule the meeting for Wednesday 5/17? I will be out the > >>> following week and would like to attend. > >>> > >>> Thanks :) > >>> > >>> On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: > >>>> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: > >>>>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D > >>>>> <michael.d.kinney@intel.com> wrote: > >>>>>> > >>>>>> I would prefer next week as well. > >>>>>> > >>>>>> Mike > >>>>>> > >>>>> > >>>>> Next week, i can only do Wednesday. The week after (22-26), the time > >>>>> slot works for me on any day of the week. > >>>>> > >>>> > >>>> Weds works from our side, the week after also works perfectly well > >>>> any day. Thanks for the flexibility and willingness to meet. > >>>> > >>>> For reference for this specific patch, this bz may help cache in > >>>> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The > >>>> mail links are largely dead, of course, but can be found on other > >>>> mailing list retention sites (maybe in the future we will have PRs > >>>> and discussions to reference :). > >>>> > >>>> Thanks, > >>>> Oliver > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >>> > >>> > >>> > >>> ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-02 2:42 ` Ni, Ray @ 2023-06-02 3:09 ` Michael Kubacki 2023-06-02 9:31 ` Ard Biesheuvel 2023-06-06 2:13 ` Michael Kubacki 0 siblings, 2 replies; 26+ messages in thread From: Michael Kubacki @ 2023-06-02 3:09 UTC (permalink / raw) To: Ni, Ray, Oliver Smith-Denny, devel@edk2.groups.io, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan Sounds good, thanks for the quick response. Can you please send a calendar invite when you get a chance? On 6/1/2023 10:42 PM, Ni, Ray wrote: > It's a good idea to have a focus area ("project") for everyone working together on the same problem. > I see the benefit of having "project" is to align everyone's priority so the "project" can be done within a certain deadline. > > Let's talk more about following items in next meeting: > 1. Alignment of the problem to solve > 2. Alignment of the priority > > I am available at 10pm~11pm (GMT+8) next Wednesday night. > > Thanks, > Ray > >> -----Original Message----- >> From: Michael Kubacki <mikuback@linux.microsoft.com> >> Sent: Friday, June 2, 2023 10:24 AM >> To: Ni, Ray <ray.ni@intel.com>; Oliver Smith-Denny <osde@linux.microsoft.com>; >> devel@edk2.groups.io; Ard Biesheuvel <ardb@kernel.org>; Kinney, Michael D >> <michael.d.kinney@intel.com>; t@taylorbeebe.com >> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel >> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; Sean >> Brogan <sean.brogan@microsoft.com> >> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities >> With Page Table Attributes >> >> Hi Ray, >> >> We found the last meeting to be very helpful. Can you please set up an >> agenda for an upcoming meeting to discuss what's happened since and next >> steps? >> >> If you're available, perhaps we could see if Wednesday next week at the >> same time would work? >> >> We'd also like to share how GitHub Projects [1] can be used to track >> future work in the memory protection work stream. We've talked about >> Projects for a while in the TianoCore Tools & CI working group and this >> looks like a great opportunity to try it out. A public project has been >> created in the TianoCore org [2]. I've placed some initial high-level >> pillars in the project at the moment. >> >> Projects can help break down larger complex items and show how the >> pieces fit together in a single place. It helps visualize who is working >> on what, when they roughly expect to complete it, and what pillars of >> memory protection work such as compatibility, testing, etc. are defined >> and how we're making progress toward them. In this meeting, we'd like to >> discuss how we can most effectively use it to collaborate in upcoming >> work areas. >> >> It is not meant to replace the mailing list for communication or change >> code review process but to organize and visualize agreed upon memory >> protection work items. Ideally, this will help track that the areas are >> covered we expect, simplify planning to intercept the changes in >> platforms, show how work items are connected, and enable new >> contributors to quickly see how they can contribute. >> >> [1] - >> https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning- >> about-projects/about-projects >> [2] - https://github.com/orgs/tianocore/projects/3 >> >> Thanks, >> Michael >> >> On 5/17/2023 3:14 AM, Ni, Ray wrote: >>> I created one event in https://edk2.groups.io/g/devel/calendar. >>> >>> Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup- >> join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZ >> h%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4-8496- >> 4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27- >> 3d06c576cc19%22%7d >>> >>> The ICS file is also attached. >>> >>> >>>> -----Original Message----- >>>> From: Oliver Smith-Denny <osde@linux.microsoft.com> >>>> Sent: Wednesday, May 17, 2023 1:12 AM >>>> To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel >>>> <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; >>>> t@taylorbeebe.com >>>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel >>>> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; >>>> Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan >>>> <sean.brogan@microsoft.com> >>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >> Capabilities >>>> With Page Table Attributes >>>> >>>> Hi Ray, >>>> >>>> That works from our side, thanks for setting up the meeting! >>>> >>>> Oliver >>>> >>>> On 5/15/2023 7:53 PM, Ni, Ray wrote: >>>>> All, >>>>> Can you check if the meeting time is ok for you? >>>>> >>>>> It will be in this week: >>>>> * PDT Wednesday 07:00 >>>>> * Paris Wednesday 16:00 >>>>> * Shanghai Wednesday 22:00 >>>>> >>>>> ________________________________________ >>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor >> Beebe >>>> <t@taylorbeebe.com> >>>>> Sent: Thursday, May 11, 2023 0:10 >>>>> To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; >> Kinney, >>>> Michael D >>>>> Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael Kubacki; >>>> Sean Brogan >>>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >>>> Capabilities With Page Table Attributes >>>>> >>>>> Can we schedule the meeting for Wednesday 5/17? I will be out the >>>>> following week and would like to attend. >>>>> >>>>> Thanks :) >>>>> >>>>> On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: >>>>>> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >>>>>>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >>>>>>> <michael.d.kinney@intel.com> wrote: >>>>>>>> >>>>>>>> I would prefer next week as well. >>>>>>>> >>>>>>>> Mike >>>>>>>> >>>>>>> >>>>>>> Next week, i can only do Wednesday. The week after (22-26), the time >>>>>>> slot works for me on any day of the week. >>>>>>> >>>>>> >>>>>> Weds works from our side, the week after also works perfectly well >>>>>> any day. Thanks for the flexibility and willingness to meet. >>>>>> >>>>>> For reference for this specific patch, this bz may help cache in >>>>>> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The >>>>>> mail links are largely dead, of course, but can be found on other >>>>>> mailing list retention sites (maybe in the future we will have PRs >>>>>> and discussions to reference :). >>>>>> >>>>>> Thanks, >>>>>> Oliver >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-02 3:09 ` Michael Kubacki @ 2023-06-02 9:31 ` Ard Biesheuvel 2023-06-06 2:13 ` Michael Kubacki 1 sibling, 0 replies; 26+ messages in thread From: Ard Biesheuvel @ 2023-06-02 9:31 UTC (permalink / raw) To: devel, mikuback Cc: Ni, Ray, Oliver Smith-Denny, Kinney, Michael D, t@taylorbeebe.com, Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan On Fri, 2 Jun 2023 at 05:10, Michael Kubacki <mikuback@linux.microsoft.com> wrote: > > Sounds good, thanks for the quick response. Can you please send a > calendar invite when you get a chance? > > On 6/1/2023 10:42 PM, Ni, Ray wrote: > > It's a good idea to have a focus area ("project") for everyone working together on the same problem. > > I see the benefit of having "project" is to align everyone's priority so the "project" can be done within a certain deadline. > > > > Let's talk more about following items in next meeting: > > 1. Alignment of the problem to solve > > 2. Alignment of the priority > > > > I am available at 10pm~11pm (GMT+8) next Wednesday night. > > This works for me as well. ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-02 3:09 ` Michael Kubacki 2023-06-02 9:31 ` Ard Biesheuvel @ 2023-06-06 2:13 ` Michael Kubacki 2023-06-06 3:00 ` Ni, Ray 1 sibling, 1 reply; 26+ messages in thread From: Michael Kubacki @ 2023-06-06 2:13 UTC (permalink / raw) To: Ni, Ray, devel@edk2.groups.io Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan, Oliver Smith-Denny, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com Hi Ray, I still haven't seen a calendar invitation. Could you please send one for us to reserve the slot on our calendars? Thanks, Michael On 6/1/2023 11:09 PM, Michael Kubacki wrote: > Sounds good, thanks for the quick response. Can you please send a > calendar invite when you get a chance? > > On 6/1/2023 10:42 PM, Ni, Ray wrote: >> It's a good idea to have a focus area ("project") for everyone working >> together on the same problem. >> I see the benefit of having "project" is to align everyone's priority >> so the "project" can be done within a certain deadline. >> >> Let's talk more about following items in next meeting: >> 1. Alignment of the problem to solve >> 2. Alignment of the priority >> >> I am available at 10pm~11pm (GMT+8) next Wednesday night. >> >> Thanks, >> Ray >> >>> -----Original Message----- >>> From: Michael Kubacki <mikuback@linux.microsoft.com> >>> Sent: Friday, June 2, 2023 10:24 AM >>> To: Ni, Ray <ray.ni@intel.com>; Oliver Smith-Denny >>> <osde@linux.microsoft.com>; >>> devel@edk2.groups.io; Ard Biesheuvel <ardb@kernel.org>; Kinney, >>> Michael D >>> <michael.d.kinney@intel.com>; t@taylorbeebe.com >>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel >>> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; Sean >>> Brogan <sean.brogan@microsoft.com> >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >>> Capabilities >>> With Page Table Attributes >>> >>> Hi Ray, >>> >>> We found the last meeting to be very helpful. Can you please set up an >>> agenda for an upcoming meeting to discuss what's happened since and next >>> steps? >>> >>> If you're available, perhaps we could see if Wednesday next week at the >>> same time would work? >>> >>> We'd also like to share how GitHub Projects [1] can be used to track >>> future work in the memory protection work stream. We've talked about >>> Projects for a while in the TianoCore Tools & CI working group and this >>> looks like a great opportunity to try it out. A public project has been >>> created in the TianoCore org [2]. I've placed some initial high-level >>> pillars in the project at the moment. >>> >>> Projects can help break down larger complex items and show how the >>> pieces fit together in a single place. It helps visualize who is working >>> on what, when they roughly expect to complete it, and what pillars of >>> memory protection work such as compatibility, testing, etc. are defined >>> and how we're making progress toward them. In this meeting, we'd like to >>> discuss how we can most effectively use it to collaborate in upcoming >>> work areas. >>> >>> It is not meant to replace the mailing list for communication or change >>> code review process but to organize and visualize agreed upon memory >>> protection work items. Ideally, this will help track that the areas are >>> covered we expect, simplify planning to intercept the changes in >>> platforms, show how work items are connected, and enable new >>> contributors to quickly see how they can contribute. >>> >>> [1] - >>> https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning- >>> about-projects/about-projects >>> [2] - https://github.com/orgs/tianocore/projects/3 >>> >>> Thanks, >>> Michael >>> >>> On 5/17/2023 3:14 AM, Ni, Ray wrote: >>>> I created one event in https://edk2.groups.io/g/devel/calendar. >>>> >>>> Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup- >>> join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZ >>> h%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4-8496- >>> 4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27- >>> 3d06c576cc19%22%7d >>>> >>>> The ICS file is also attached. >>>> >>>> >>>>> -----Original Message----- >>>>> From: Oliver Smith-Denny <osde@linux.microsoft.com> >>>>> Sent: Wednesday, May 17, 2023 1:12 AM >>>>> To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel >>>>> <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; >>>>> t@taylorbeebe.com >>>>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel >>>>> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; >>>>> Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan >>>>> <sean.brogan@microsoft.com> >>>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >>> Capabilities >>>>> With Page Table Attributes >>>>> >>>>> Hi Ray, >>>>> >>>>> That works from our side, thanks for setting up the meeting! >>>>> >>>>> Oliver >>>>> >>>>> On 5/15/2023 7:53 PM, Ni, Ray wrote: >>>>>> All, >>>>>> Can you check if the meeting time is ok for you? >>>>>> >>>>>> It will be in this week: >>>>>> * PDT Wednesday 07:00 >>>>>> * Paris Wednesday 16:00 >>>>>> * Shanghai Wednesday 22:00 >>>>>> >>>>>> ________________________________________ >>>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor >>> Beebe >>>>> <t@taylorbeebe.com> >>>>>> Sent: Thursday, May 11, 2023 0:10 >>>>>> To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; >>> Kinney, >>>>> Michael D >>>>>> Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael >>>>>> Kubacki; >>>>> Sean Brogan >>>>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD >>>>> Capabilities With Page Table Attributes >>>>>> >>>>>> Can we schedule the meeting for Wednesday 5/17? I will be out the >>>>>> following week and would like to attend. >>>>>> >>>>>> Thanks :) >>>>>> >>>>>> On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: >>>>>>> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: >>>>>>>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D >>>>>>>> <michael.d.kinney@intel.com> wrote: >>>>>>>>> >>>>>>>>> I would prefer next week as well. >>>>>>>>> >>>>>>>>> Mike >>>>>>>>> >>>>>>>> >>>>>>>> Next week, i can only do Wednesday. The week after (22-26), the >>>>>>>> time >>>>>>>> slot works for me on any day of the week. >>>>>>>> >>>>>>> >>>>>>> Weds works from our side, the week after also works perfectly well >>>>>>> any day. Thanks for the flexibility and willingness to meet. >>>>>>> >>>>>>> For reference for this specific patch, this bz may help cache in >>>>>>> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The >>>>>>> mail links are largely dead, of course, but can be found on other >>>>>>> mailing list retention sites (maybe in the future we will have PRs >>>>>>> and discussions to reference :). >>>>>>> >>>>>>> Thanks, >>>>>>> Oliver >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-06 2:13 ` Michael Kubacki @ 2023-06-06 3:00 ` Ni, Ray 0 siblings, 0 replies; 26+ messages in thread From: Ni, Ray @ 2023-06-06 3:00 UTC (permalink / raw) To: devel@edk2.groups.io, mikuback@linux.microsoft.com Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Sean Brogan, Oliver Smith-Denny, Ard Biesheuvel, Kinney, Michael D, t@taylorbeebe.com [-- Attachment #1: Type: text/plain, Size: 7838 bytes --] I just set it up. It's in https://edk2.groups.io/g/devel/calendar, also in attachment. > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael > Kubacki > Sent: Tuesday, June 6, 2023 10:14 AM > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io > Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; Sean > Brogan <sean.brogan@microsoft.com>; Oliver Smith-Denny > <osde@linux.microsoft.com>; Ard Biesheuvel <ardb@kernel.org>; Kinney, > Michael D <michael.d.kinney@intel.com>; t@taylorbeebe.com > Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities > With Page Table Attributes > > Hi Ray, > > I still haven't seen a calendar invitation. Could you please send one > for us to reserve the slot on our calendars? > > Thanks, > Michael > > On 6/1/2023 11:09 PM, Michael Kubacki wrote: > > Sounds good, thanks for the quick response. Can you please send a > > calendar invite when you get a chance? > > > > On 6/1/2023 10:42 PM, Ni, Ray wrote: > >> It's a good idea to have a focus area ("project") for everyone working > >> together on the same problem. > >> I see the benefit of having "project" is to align everyone's priority > >> so the "project" can be done within a certain deadline. > >> > >> Let's talk more about following items in next meeting: > >> 1. Alignment of the problem to solve > >> 2. Alignment of the priority > >> > >> I am available at 10pm~11pm (GMT+8) next Wednesday night. > >> > >> Thanks, > >> Ray > >> > >>> -----Original Message----- > >>> From: Michael Kubacki <mikuback@linux.microsoft.com> > >>> Sent: Friday, June 2, 2023 10:24 AM > >>> To: Ni, Ray <ray.ni@intel.com>; Oliver Smith-Denny > >>> <osde@linux.microsoft.com>; > >>> devel@edk2.groups.io; Ard Biesheuvel <ardb@kernel.org>; Kinney, > >>> Michael D > >>> <michael.d.kinney@intel.com>; t@taylorbeebe.com > >>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > >>> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > Sean > >>> Brogan <sean.brogan@microsoft.com> > >>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >>> Capabilities > >>> With Page Table Attributes > >>> > >>> Hi Ray, > >>> > >>> We found the last meeting to be very helpful. Can you please set up an > >>> agenda for an upcoming meeting to discuss what's happened since and next > >>> steps? > >>> > >>> If you're available, perhaps we could see if Wednesday next week at the > >>> same time would work? > >>> > >>> We'd also like to share how GitHub Projects [1] can be used to track > >>> future work in the memory protection work stream. We've talked about > >>> Projects for a while in the TianoCore Tools & CI working group and this > >>> looks like a great opportunity to try it out. A public project has been > >>> created in the TianoCore org [2]. I've placed some initial high-level > >>> pillars in the project at the moment. > >>> > >>> Projects can help break down larger complex items and show how the > >>> pieces fit together in a single place. It helps visualize who is working > >>> on what, when they roughly expect to complete it, and what pillars of > >>> memory protection work such as compatibility, testing, etc. are defined > >>> and how we're making progress toward them. In this meeting, we'd like to > >>> discuss how we can most effectively use it to collaborate in upcoming > >>> work areas. > >>> > >>> It is not meant to replace the mailing list for communication or change > >>> code review process but to organize and visualize agreed upon memory > >>> protection work items. Ideally, this will help track that the areas are > >>> covered we expect, simplify planning to intercept the changes in > >>> platforms, show how work items are connected, and enable new > >>> contributors to quickly see how they can contribute. > >>> > >>> [1] - > >>> https://docs.github.com/en/issues/planning-and-tracking-with- > projects/learning- > >>> about-projects/about-projects > >>> [2] - https://github.com/orgs/tianocore/projects/3 > >>> > >>> Thanks, > >>> Michael > >>> > >>> On 5/17/2023 3:14 AM, Ni, Ray wrote: > >>>> I created one event in https://edk2.groups.io/g/devel/calendar. > >>>> > >>>> Microsoft Teams meeting link: https://teams.microsoft.com/l/meetup- > >>> > join/19%3ameeting_YTk4ZDU3YjItODkxZC00MTdmLTlkZmUtYThkNGQ0ZWYyMDZ > >>> h%40thread.v2/0?context=%7b%22Tid%22%3a%2246c98d88-e344-4ed4- > 8496- > >>> 4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50-78be-4ced-bc27- > >>> 3d06c576cc19%22%7d > >>>> > >>>> The ICS file is also attached. > >>>> > >>>> > >>>>> -----Original Message----- > >>>>> From: Oliver Smith-Denny <osde@linux.microsoft.com> > >>>>> Sent: Wednesday, May 17, 2023 1:12 AM > >>>>> To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Ard Biesheuvel > >>>>> <ardb@kernel.org>; Kinney, Michael D <michael.d.kinney@intel.com>; > >>>>> t@taylorbeebe.com > >>>>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel > >>>>> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>; > >>>>> Michael Kubacki <mikuback@linux.microsoft.com>; Sean Brogan > >>>>> <sean.brogan@microsoft.com> > >>>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >>> Capabilities > >>>>> With Page Table Attributes > >>>>> > >>>>> Hi Ray, > >>>>> > >>>>> That works from our side, thanks for setting up the meeting! > >>>>> > >>>>> Oliver > >>>>> > >>>>> On 5/15/2023 7:53 PM, Ni, Ray wrote: > >>>>>> All, > >>>>>> Can you check if the meeting time is ok for you? > >>>>>> > >>>>>> It will be in this week: > >>>>>> * PDT Wednesday 07:00 > >>>>>> * Paris Wednesday 16:00 > >>>>>> * Shanghai Wednesday 22:00 > >>>>>> > >>>>>> ________________________________________ > >>>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Taylor > >>> Beebe > >>>>> <t@taylorbeebe.com> > >>>>>> Sent: Thursday, May 11, 2023 0:10 > >>>>>> To: devel@edk2.groups.io; osde@linux.microsoft.com; Ard Biesheuvel; > >>> Kinney, > >>>>> Michael D > >>>>>> Cc: Ni, Ray; Leif Lindholm; Ard Biesheuvel; Sami Mujawar; Michael > >>>>>> Kubacki; > >>>>> Sean Brogan > >>>>>> Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD > >>>>> Capabilities With Page Table Attributes > >>>>>> > >>>>>> Can we schedule the meeting for Wednesday 5/17? I will be out the > >>>>>> following week and would like to attend. > >>>>>> > >>>>>> Thanks :) > >>>>>> > >>>>>> On 5/9/2023 7:59 AM, Oliver Smith-Denny wrote: > >>>>>>> On 5/8/2023 11:59 PM, Ard Biesheuvel wrote: > >>>>>>>> On Tue, 9 May 2023 at 04:04, Kinney, Michael D > >>>>>>>> <michael.d.kinney@intel.com> wrote: > >>>>>>>>> > >>>>>>>>> I would prefer next week as well. > >>>>>>>>> > >>>>>>>>> Mike > >>>>>>>>> > >>>>>>>> > >>>>>>>> Next week, i can only do Wednesday. The week after (22-26), the > >>>>>>>> time > >>>>>>>> slot works for me on any day of the week. > >>>>>>>> > >>>>>>> > >>>>>>> Weds works from our side, the week after also works perfectly well > >>>>>>> any day. Thanks for the flexibility and willingness to meet. > >>>>>>> > >>>>>>> For reference for this specific patch, this bz may help cache in > >>>>>>> some info: https://bugzilla.tianocore.org/show_bug.cgi?id=753. The > >>>>>>> mail links are largely dead, of course, but can be found on other > >>>>>>> mailing list retention sites (maybe in the future we will have PRs > >>>>>>> and discussions to reference :). > >>>>>>> > >>>>>>> Thanks, > >>>>>>> Oliver > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > > > > [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: invite (1).ics --] [-- Type: text/calendar; name="invite (1).ics", Size: 1045 bytes --] BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Groups.io Inc//Groups.io Calendar//EN METHOD:PUBLISH REFRESH-INTERVAL;VALUE=DURATION:PT1H X-PUBLISHED-TTL:PT1H CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Asia/Shanghai LAST-MODIFIED:20230407T050750Z TZURL:https://www.tzurl.org/zoneinfo-outlook/Asia/Shanghai X-LIC-LOCATION:Asia/Shanghai BEGIN:STANDARD TZNAME:CST TZOFFSETFROM:+0800 TZOFFSETTO:+0800 DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE BEGIN:VEVENT X-GIOIDS:Event:1953410 UID:z7xI.1686020349727420558.jYkC@groups.io DTSTAMP:20230606T025938Z ORGANIZER;CN=Ray Ni:mailto:ray.ni@intel.com DTSTART:20230607T140000Z DTEND:20230607T150000Z SUMMARY:UEFI Memory Map\, GCD\, Page Table discussion - ARM/X86 (2nd sess ion) LOCATION:https://teams.microsoft.com/l/meetup-join/19%3ameeting_M2RjMDI1N jEtMmQ3MS00ZWM0LTlkMzEtOWU1NGE2MGUwYmYx%40thread.v2/0?context=%7b%22Tid%2 2%3a%2246c98d88-e344-4ed4-8496-4ed7712e255d%22%2c%22Oid%22%3a%2255d36a50- 78be-4ced-bc27-3d06c576cc19%22%7d SEQUENCE:1 END:VEVENT END:VCALENDAR ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <1759538694580A69.7408@groups.io>]
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes [not found] <1759538694580A69.7408@groups.io> @ 2023-06-07 16:10 ` Oliver Smith-Denny 2023-06-07 17:31 ` Ard Biesheuvel 0 siblings, 1 reply; 26+ messages in thread From: Oliver Smith-Denny @ 2023-06-07 16:10 UTC (permalink / raw) To: devel Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan Per the discussion in the memory protections design meeting this morning, I am kicking this patch back to the top of the inbox for review. If folks would like me to resend this patchset since the thread got bogged down with scheduling meetings, just let me know. I'll also pull up the BZ link for when the equivalent change went into the x86 CpuDxe driver in 2017: https://bugzilla.tianocore.org/show_bug.cgi?id=753 This contains lots of information about why the change went in on the x86 side (some dead mail links, but they can be retrieved through some digging). AFAICT, this change wasn't applied to ARM at the time due to an oversight, not a general design decision. Thanks, Oliver On 4/25/2023 5:09 PM, Oliver Smith-Denny wrote: > When ArmPkg's CpuDxe driver initializes, it attempts to sync the > > GCD with the page table. However, unlike when the UefiCpuPkg's > > CpuDxe initializes, the Arm version does not update the GCD > > capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set > > the capabilities to be the existing page table attributes for > > this range, but the UefiCpuPkg CpuDxe sets the above attributes > > as they are software constructs, possible to set for any memory > > hardware). > > > > As a result, when the GCD attributes are attempted to be set > > against the old GCD capabilities, attributes that are set in the > > page table can get lost because the new attributes are not in the > > old GCD capabilities (and yet they are already set in the page > > table) meaning that the attempted sync between the GCD and the > > page table was a failure and drivers querying one vs the other > > will see different state. This can lead to RWX memory regions > > even with the no-execute policy set, because core drivers (such > > as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) > > allocate pages, query the GCD attributes, attempt to set a new > > cache attribute and end up clearing the XP bit in the page table > > because the GCD attributes do not have XP set. > > > > This patch follows the UefiCpuPkg pattern and adds > > EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe > > initialization. This ensures that memory regions which already have > > these attributes set get them set in the GCD attributes, properly > > syncing between the GCD and the page table. > > > > This mitigates the issue seen, however, additional investigations > > into setting the GCD attributes earlier and maintaining a better > > sync between the GCD and the page table are being done. > > > > Feedback on this proposal is greatly appreciated, particularly > > any pitfalls or more architectural solutions to issues seen > > with syncing the GCD and the page table. > > > > PR: https://github.com/tianocore/edk2/pull/4311 > > Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 > > > > Cc: Leif Lindholm <quic_llindhol@quicinc.com> > > Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> > > Cc: Sami Mujawar <sami.mujawar@arm.com> > > Cc: Michael Kubacki <mikuback@linux.microsoft.com> > > Cc: Sean Brogan <sean.brogan@microsoft.com> > > > > Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> > > --- > > ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- > > 1 file changed, 49 insertions(+), 6 deletions(-) > > > > diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > index 2e73719dce04..3ef0380e084f 100644 > > --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( > > UINTN EndIndex; > > EFI_PHYSICAL_ADDRESS RegionStart; > > UINT64 RegionLength; > > + UINT64 Capabilities; > > > > DEBUG (( > > DEBUG_GCD, > > @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( > > RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; > > } > > > > + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software > > + // constructs, not hardware features) and they are critical to maintaining a security boundary > > + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; > > + > > // > > - // Set memory attributes according to MTRR attribute and the original attribute of descriptor > > + // Update GCD capabilities as these may have changed in the page table since the GCD was created > > + // this follows the same pattern as x86 GCD and Page Table syncing > > // > > - gDS->SetMemorySpaceAttributes ( > > - RegionStart, > > - RegionLength, > > - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) > > - ); > > + Status = gDS->SetMemorySpaceCapabilities ( > > + RegionStart, > > + RegionLength, > > + Capabilities > > + ); > > + > > + if (EFI_ERROR (Status)) { > > + DEBUG (( > > + DEBUG_ERROR, > > + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > > + __func__, > > + Capabilities, > > + RegionStart, > > + RegionLength, > > + Status > > + )); > > + ASSERT_EFI_ERROR (Status); > > + continue; > > + } > > + > > + // > > + // Set memory attributes according to the page table attribute and the original attribute of descriptor > > + // > > + Status = gDS->SetMemorySpaceAttributes ( > > + RegionStart, > > + RegionLength, > > + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) > > + ); > > + > > + if (EFI_ERROR (Status)) { > > + DEBUG (( > > + DEBUG_ERROR, > > + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > > + __func__, > > + Attributes, > > + RegionStart, > > + RegionLength, > > + Status > > + )); > > + ASSERT_EFI_ERROR (Status); > > + continue; > > + } > > } > > > > return EFI_SUCCESS; > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-07 16:10 ` [edk2-devel][PATCH " Oliver Smith-Denny @ 2023-06-07 17:31 ` Ard Biesheuvel 2023-06-07 18:03 ` Oliver Smith-Denny [not found] ` <176672827230FBF7.32008@groups.io> 0 siblings, 2 replies; 26+ messages in thread From: Ard Biesheuvel @ 2023-06-07 17:31 UTC (permalink / raw) To: devel, osde Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On Wed, 7 Jun 2023 at 18:10, Oliver Smith-Denny <osde@linux.microsoft.com> wrote: > > Per the discussion in the memory protections design meeting > this morning, I am kicking this patch back to the top of > the inbox for review. If folks would like me to resend this > patchset since the thread got bogged down with scheduling > meetings, just let me know. > > I'll also pull up the BZ link for when the equivalent > change went into the x86 CpuDxe driver in 2017: > > https://bugzilla.tianocore.org/show_bug.cgi?id=753 > > This contains lots of information about why the change went > in on the x86 side (some dead mail links, but they can be > retrieved through some digging). AFAICT, this change wasn't > applied to ARM at the time due to an oversight, not a general > design decision. > Thanks for the background, this is useful. So I agree that for all system memory regions, we should be setting the RP, RO and XP capabilities. But what I don't understand is why these are not set to begin with. IOW, the resource descriptor HOBs that the initial regions are based on should have these capabilities set already, and then, we wouldn't have to do anything to at this point. If there is anything missing from the generic plumbing to make sure this transformation happens correctly, we should fix that first, and fix the existing ARM platforms to set the correct resource attributes. For example, ArmVirtQemu uses ResourceAttributes = ( EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | EFI_RESOURCE_ATTRIBUTE_TESTED ); for the resource descriptor HOBs, and afaict, this should include EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE to accurately describe the region's capabilities. WIth that out of the way, I wonder if we still need this patch at all. Thanks, Ard. > > On 4/25/2023 5:09 PM, Oliver Smith-Denny wrote: > > When ArmPkg's CpuDxe driver initializes, it attempts to sync the > > > > GCD with the page table. However, unlike when the UefiCpuPkg's > > > > CpuDxe initializes, the Arm version does not update the GCD > > > > capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set > > > > the capabilities to be the existing page table attributes for > > > > this range, but the UefiCpuPkg CpuDxe sets the above attributes > > > > as they are software constructs, possible to set for any memory > > > > hardware). > > > > > > > > As a result, when the GCD attributes are attempted to be set > > > > against the old GCD capabilities, attributes that are set in the > > > > page table can get lost because the new attributes are not in the > > > > old GCD capabilities (and yet they are already set in the page > > > > table) meaning that the attempted sync between the GCD and the > > > > page table was a failure and drivers querying one vs the other > > > > will see different state. This can lead to RWX memory regions > > > > even with the no-execute policy set, because core drivers (such > > > > as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) > > > > allocate pages, query the GCD attributes, attempt to set a new > > > > cache attribute and end up clearing the XP bit in the page table > > > > because the GCD attributes do not have XP set. > > > > > > > > This patch follows the UefiCpuPkg pattern and adds > > > > EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe > > > > initialization. This ensures that memory regions which already have > > > > these attributes set get them set in the GCD attributes, properly > > > > syncing between the GCD and the page table. > > > > > > > > This mitigates the issue seen, however, additional investigations > > > > into setting the GCD attributes earlier and maintaining a better > > > > sync between the GCD and the page table are being done. > > > > > > > > Feedback on this proposal is greatly appreciated, particularly > > > > any pitfalls or more architectural solutions to issues seen > > > > with syncing the GCD and the page table. > > > > > > > > PR: https://github.com/tianocore/edk2/pull/4311 > > > > Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 > > > > > > > > Cc: Leif Lindholm <quic_llindhol@quicinc.com> > > > > Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> > > > > Cc: Sami Mujawar <sami.mujawar@arm.com> > > > > Cc: Michael Kubacki <mikuback@linux.microsoft.com> > > > > Cc: Sean Brogan <sean.brogan@microsoft.com> > > > > > > > > Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> > > > > --- > > > > ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- > > > > 1 file changed, 49 insertions(+), 6 deletions(-) > > > > > > > > diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > > > index 2e73719dce04..3ef0380e084f 100644 > > > > --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > > > +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c > > > > @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( > > > > UINTN EndIndex; > > > > EFI_PHYSICAL_ADDRESS RegionStart; > > > > UINT64 RegionLength; > > > > + UINT64 Capabilities; > > > > > > > > DEBUG (( > > > > DEBUG_GCD, > > > > @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( > > > > RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; > > > > } > > > > > > > > + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software > > > > + // constructs, not hardware features) and they are critical to maintaining a security boundary > > > > + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; > > > > + > > > > // > > > > - // Set memory attributes according to MTRR attribute and the original attribute of descriptor > > > > + // Update GCD capabilities as these may have changed in the page table since the GCD was created > > > > + // this follows the same pattern as x86 GCD and Page Table syncing > > > > // > > > > - gDS->SetMemorySpaceAttributes ( > > > > - RegionStart, > > > > - RegionLength, > > > > - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) > > > > - ); > > > > + Status = gDS->SetMemorySpaceCapabilities ( > > > > + RegionStart, > > > > + RegionLength, > > > > + Capabilities > > > > + ); > > > > + > > > > + if (EFI_ERROR (Status)) { > > > > + DEBUG (( > > > > + DEBUG_ERROR, > > > > + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > > > > + __func__, > > > > + Capabilities, > > > > + RegionStart, > > > > + RegionLength, > > > > + Status > > > > + )); > > > > + ASSERT_EFI_ERROR (Status); > > > > + continue; > > > > + } > > > > + > > > > + // > > > > + // Set memory attributes according to the page table attribute and the original attribute of descriptor > > > > + // > > > > + Status = gDS->SetMemorySpaceAttributes ( > > > > + RegionStart, > > > > + RegionLength, > > > > + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) > > > > + ); > > > > + > > > > + if (EFI_ERROR (Status)) { > > > > + DEBUG (( > > > > + DEBUG_ERROR, > > > > + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", > > > > + __func__, > > > > + Attributes, > > > > + RegionStart, > > > > + RegionLength, > > > > + Status > > > > + )); > > > > + ASSERT_EFI_ERROR (Status); > > > > + continue; > > > > + } > > > > } > > > > > > > > return EFI_SUCCESS; > > ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes 2023-06-07 17:31 ` Ard Biesheuvel @ 2023-06-07 18:03 ` Oliver Smith-Denny [not found] ` <176672827230FBF7.32008@groups.io> 1 sibling, 0 replies; 26+ messages in thread From: Oliver Smith-Denny @ 2023-06-07 18:03 UTC (permalink / raw) To: devel, ardb Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On 6/7/2023 10:31 AM, Ard Biesheuvel wrote: > On Wed, 7 Jun 2023 at 18:10, Oliver Smith-Denny > <osde@linux.microsoft.com> wrote: >> >> Per the discussion in the memory protections design meeting >> this morning, I am kicking this patch back to the top of >> the inbox for review. If folks would like me to resend this >> patchset since the thread got bogged down with scheduling >> meetings, just let me know. >> >> I'll also pull up the BZ link for when the equivalent >> change went into the x86 CpuDxe driver in 2017: >> >> https://bugzilla.tianocore.org/show_bug.cgi?id=753 >> >> This contains lots of information about why the change went >> in on the x86 side (some dead mail links, but they can be >> retrieved through some digging). AFAICT, this change wasn't >> applied to ARM at the time due to an oversight, not a general >> design decision. >> > > Thanks for the background, this is useful. > > So I agree that for all system memory regions, we should be setting > the RP, RO and XP capabilities. But what I don't understand is why > these are not set to begin with. > > IOW, the resource descriptor HOBs that the initial regions are based > on should have these capabilities set already, and then, we wouldn't > have to do anything to at this point. If there is anything missing > from the generic plumbing to make sure this transformation happens > correctly, we should fix that first, and fix the existing ARM > platforms to set the correct resource attributes. > > For example, ArmVirtQemu uses > > ResourceAttributes = ( > EFI_RESOURCE_ATTRIBUTE_PRESENT | > EFI_RESOURCE_ATTRIBUTE_INITIALIZED | > EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | > EFI_RESOURCE_ATTRIBUTE_TESTED > ); > > for the resource descriptor HOBs, and afaict, this should include > > EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE > EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE > EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE > > to accurately describe the region's capabilities. > > WIth that out of the way, I wonder if we still need this patch at all. > > Thanks, > Ard. > I definitely agree this should be set at GCD initialization. Looking at the code path you present, I think this could work. My initial concern was that the resource descriptor HOB was passing attributes not capabilities, but I see that it actually passes both in a field called attributes :). On ARM, as you point out, this looks like we would intercept at MemoryInitPeiLib when it builds the HOBs. This would be a separate method from what x86 does, but I can take a look at aligning x86 to initializing the capabilities through the resource descriptor HOBs. I'll take a crack at this and see how it shapes up. Seems reasonable to me, though. I'll need to look into adding memory ranges, we would want new ranges to have the capabilities, too. Thanks, Oliver > > >> >> On 4/25/2023 5:09 PM, Oliver Smith-Denny wrote: >>> When ArmPkg's CpuDxe driver initializes, it attempts to sync the >>> >>> GCD with the page table. However, unlike when the UefiCpuPkg's >>> >>> CpuDxe initializes, the Arm version does not update the GCD >>> >>> capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set >>> >>> the capabilities to be the existing page table attributes for >>> >>> this range, but the UefiCpuPkg CpuDxe sets the above attributes >>> >>> as they are software constructs, possible to set for any memory >>> >>> hardware). >>> >>> >>> >>> As a result, when the GCD attributes are attempted to be set >>> >>> against the old GCD capabilities, attributes that are set in the >>> >>> page table can get lost because the new attributes are not in the >>> >>> old GCD capabilities (and yet they are already set in the page >>> >>> table) meaning that the attempted sync between the GCD and the >>> >>> page table was a failure and drivers querying one vs the other >>> >>> will see different state. This can lead to RWX memory regions >>> >>> even with the no-execute policy set, because core drivers (such >>> >>> as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) >>> >>> allocate pages, query the GCD attributes, attempt to set a new >>> >>> cache attribute and end up clearing the XP bit in the page table >>> >>> because the GCD attributes do not have XP set. >>> >>> >>> >>> This patch follows the UefiCpuPkg pattern and adds >>> >>> EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe >>> >>> initialization. This ensures that memory regions which already have >>> >>> these attributes set get them set in the GCD attributes, properly >>> >>> syncing between the GCD and the page table. >>> >>> >>> >>> This mitigates the issue seen, however, additional investigations >>> >>> into setting the GCD attributes earlier and maintaining a better >>> >>> sync between the GCD and the page table are being done. >>> >>> >>> >>> Feedback on this proposal is greatly appreciated, particularly >>> >>> any pitfalls or more architectural solutions to issues seen >>> >>> with syncing the GCD and the page table. >>> >>> >>> >>> PR: https://github.com/tianocore/edk2/pull/4311 >>> >>> Personal branch: https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 >>> >>> >>> >>> Cc: Leif Lindholm <quic_llindhol@quicinc.com> >>> >>> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> >>> >>> Cc: Sami Mujawar <sami.mujawar@arm.com> >>> >>> Cc: Michael Kubacki <mikuback@linux.microsoft.com> >>> >>> Cc: Sean Brogan <sean.brogan@microsoft.com> >>> >>> >>> >>> Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> >>> >>> --- >>> >>> ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- >>> >>> 1 file changed, 49 insertions(+), 6 deletions(-) >>> >>> >>> >>> diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>> >>> index 2e73719dce04..3ef0380e084f 100644 >>> >>> --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>> >>> +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>> >>> @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( >>> >>> UINTN EndIndex; >>> >>> EFI_PHYSICAL_ADDRESS RegionStart; >>> >>> UINT64 RegionLength; >>> >>> + UINT64 Capabilities; >>> >>> >>> >>> DEBUG (( >>> >>> DEBUG_GCD, >>> >>> @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( >>> >>> RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart; >>> >>> } >>> >>> >>> >>> + // Always add RO, RP, and XP as all memory is capable of supporting these types (they are software >>> >>> + // constructs, not hardware features) and they are critical to maintaining a security boundary >>> >>> + Capabilities = MemorySpaceMap[Index].Capabilities | EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; >>> >>> + >>> >>> // >>> >>> - // Set memory attributes according to MTRR attribute and the original attribute of descriptor >>> >>> + // Update GCD capabilities as these may have changed in the page table since the GCD was created >>> >>> + // this follows the same pattern as x86 GCD and Page Table syncing >>> >>> // >>> >>> - gDS->SetMemorySpaceAttributes ( >>> >>> - RegionStart, >>> >>> - RegionLength, >>> >>> - (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & Attributes) >>> >>> - ); >>> >>> + Status = gDS->SetMemorySpaceCapabilities ( >>> >>> + RegionStart, >>> >>> + RegionLength, >>> >>> + Capabilities >>> >>> + ); >>> >>> + >>> >>> + if (EFI_ERROR (Status)) { >>> >>> + DEBUG (( >>> >>> + DEBUG_ERROR, >>> >>> + "%a - failed to update GCD capabilities: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", >>> >>> + __func__, >>> >>> + Capabilities, >>> >>> + RegionStart, >>> >>> + RegionLength, >>> >>> + Status >>> >>> + )); >>> >>> + ASSERT_EFI_ERROR (Status); >>> >>> + continue; >>> >>> + } >>> >>> + >>> >>> + // >>> >>> + // Set memory attributes according to the page table attribute and the original attribute of descriptor >>> >>> + // >>> >>> + Status = gDS->SetMemorySpaceAttributes ( >>> >>> + RegionStart, >>> >>> + RegionLength, >>> >>> + (MemorySpaceMap[Index].Attributes & ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) >>> >>> + ); >>> >>> + >>> >>> + if (EFI_ERROR (Status)) { >>> >>> + DEBUG (( >>> >>> + DEBUG_ERROR, >>> >>> + "%a - failed to update GCD attributes: 0x%llx on memory region: 0x%llx length: 0x%llx Status: %r\n", >>> >>> + __func__, >>> >>> + Attributes, >>> >>> + RegionStart, >>> >>> + RegionLength, >>> >>> + Status >>> >>> + )); >>> >>> + ASSERT_EFI_ERROR (Status); >>> >>> + continue; >>> >>> + } >>> >>> } >>> >>> >>> >>> return EFI_SUCCESS; >>> > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <176672827230FBF7.32008@groups.io>]
* Re: [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes [not found] ` <176672827230FBF7.32008@groups.io> @ 2023-07-07 20:13 ` Oliver Smith-Denny 0 siblings, 0 replies; 26+ messages in thread From: Oliver Smith-Denny @ 2023-07-07 20:13 UTC (permalink / raw) To: devel, ardb Cc: Leif Lindholm, Ard Biesheuvel, Sami Mujawar, Michael Kubacki, Sean Brogan On 6/7/2023 11:03 AM, Oliver Smith-Denny wrote: > On 6/7/2023 10:31 AM, Ard Biesheuvel wrote: >> On Wed, 7 Jun 2023 at 18:10, Oliver Smith-Denny >> <osde@linux.microsoft.com> wrote: >>> >>> Per the discussion in the memory protections design meeting >>> this morning, I am kicking this patch back to the top of >>> the inbox for review. If folks would like me to resend this >>> patchset since the thread got bogged down with scheduling >>> meetings, just let me know. >>> >>> I'll also pull up the BZ link for when the equivalent >>> change went into the x86 CpuDxe driver in 2017: >>> >>> https://bugzilla.tianocore.org/show_bug.cgi?id=753 >>> >>> This contains lots of information about why the change went >>> in on the x86 side (some dead mail links, but they can be >>> retrieved through some digging). AFAICT, this change wasn't >>> applied to ARM at the time due to an oversight, not a general >>> design decision. >>> >> >> Thanks for the background, this is useful. >> >> So I agree that for all system memory regions, we should be setting >> the RP, RO and XP capabilities. But what I don't understand is why >> these are not set to begin with. >> >> IOW, the resource descriptor HOBs that the initial regions are based >> on should have these capabilities set already, and then, we wouldn't >> have to do anything to at this point. If there is anything missing >> from the generic plumbing to make sure this transformation happens >> correctly, we should fix that first, and fix the existing ARM >> platforms to set the correct resource attributes. >> >> For example, ArmVirtQemu uses >> >> ResourceAttributes = ( >> EFI_RESOURCE_ATTRIBUTE_PRESENT | >> EFI_RESOURCE_ATTRIBUTE_INITIALIZED | >> EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | >> EFI_RESOURCE_ATTRIBUTE_TESTED >> ); >> >> for the resource descriptor HOBs, and afaict, this should include >> >> EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE >> EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE >> EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE >> >> to accurately describe the region's capabilities. >> >> WIth that out of the way, I wonder if we still need this patch at all. >> >> Thanks, >> Ard. >> > > I definitely agree this should be set at GCD initialization. Looking > at the code path you present, I think this could work. My initial > concern was that the resource descriptor HOB was passing attributes > not capabilities, but I see that it actually passes both in a field > called attributes :). > > On ARM, as you point out, this looks like we would intercept at > MemoryInitPeiLib when it builds the HOBs. This would be a separate > method from what x86 does, but I can take a look at aligning x86 > to initializing the capabilities through the resource descriptor > HOBs. > > I'll take a crack at this and see how it shapes up. Seems reasonable > to me, though. I'll need to look into adding memory ranges, we would > want new ranges to have the capabilities, too. > Hi Ard, I'm returning to this after a couple of weeks of vacation, hopefully with fresh eyes :). The path you describe of resource descriptor HOBs including the RO/RP/XP capabilities does looks like it would work and I do like that it moves these capabilities earlier. That being said, the downside of this approach to me is that it has the core code rely on the platform doing the right thing, which is far from guaranteed. I would prefer to have the core code control the memory protections as much as possible with platform configurability. Platforms have already had the opportunity to set these capabilities in resource descriptor HOBs, but are not. This leads into another related concept, what is the default state of free memory (is it XP, RO, RP, none of them, some combination, etc.). This is also something that should be enforced at the core level, I believe. I will explore this further in a different patch set. For this patchset, I think the right approach would be to set the RP/RO/XP capabilities by default when constructing the GCD. This would also allow the Intel side to not have the workaround they have, where they apply these capabilities when syncing the page table and the GCD after CpuDxe comes up (as I did in this patchset for ARM64). I can spin off a new version with that once I do so some testing. Thanks, Oliver > >> >> >>> >>> On 4/25/2023 5:09 PM, Oliver Smith-Denny wrote: >>>> When ArmPkg's CpuDxe driver initializes, it attempts to sync the >>>> >>>> GCD with the page table. However, unlike when the UefiCpuPkg's >>>> >>>> CpuDxe initializes, the Arm version does not update the GCD >>>> >>>> capabilities with EFI_MEMORY_[RO|RP|XP] (this could also set >>>> >>>> the capabilities to be the existing page table attributes for >>>> >>>> this range, but the UefiCpuPkg CpuDxe sets the above attributes >>>> >>>> as they are software constructs, possible to set for any memory >>>> >>>> hardware). >>>> >>>> >>>> >>>> As a result, when the GCD attributes are attempted to be set >>>> >>>> against the old GCD capabilities, attributes that are set in the >>>> >>>> page table can get lost because the new attributes are not in the >>>> >>>> old GCD capabilities (and yet they are already set in the page >>>> >>>> table) meaning that the attempted sync between the GCD and the >>>> >>>> page table was a failure and drivers querying one vs the other >>>> >>>> will see different state. This can lead to RWX memory regions >>>> >>>> even with the no-execute policy set, because core drivers (such >>>> >>>> as NonDiscoverablePciDeviceIo, to be fixed up in a later patchset) >>>> >>>> allocate pages, query the GCD attributes, attempt to set a new >>>> >>>> cache attribute and end up clearing the XP bit in the page table >>>> >>>> because the GCD attributes do not have XP set. >>>> >>>> >>>> >>>> This patch follows the UefiCpuPkg pattern and adds >>>> >>>> EFI_MEMORY_[RO|RP|XP] to the GCD capabilities during CpuDxe >>>> >>>> initialization. This ensures that memory regions which already have >>>> >>>> these attributes set get them set in the GCD attributes, properly >>>> >>>> syncing between the GCD and the page table. >>>> >>>> >>>> >>>> This mitigates the issue seen, however, additional investigations >>>> >>>> into setting the GCD attributes earlier and maintaining a better >>>> >>>> sync between the GCD and the page table are being done. >>>> >>>> >>>> >>>> Feedback on this proposal is greatly appreciated, particularly >>>> >>>> any pitfalls or more architectural solutions to issues seen >>>> >>>> with syncing the GCD and the page table. >>>> >>>> >>>> >>>> PR: https://github.com/tianocore/edk2/pull/4311 >>>> >>>> Personal branch: >>>> https://github.com/os-d/edk2/tree/osde/sync_aarch64_gcd_capabilities_v1 >>>> >>>> >>>> >>>> Cc: Leif Lindholm <quic_llindhol@quicinc.com> >>>> >>>> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> >>>> >>>> Cc: Sami Mujawar <sami.mujawar@arm.com> >>>> >>>> Cc: Michael Kubacki <mikuback@linux.microsoft.com> >>>> >>>> Cc: Sean Brogan <sean.brogan@microsoft.com> >>>> >>>> >>>> >>>> Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com> >>>> >>>> --- >>>> >>>> ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 55 +++++++++++++++++--- >>>> >>>> 1 file changed, 49 insertions(+), 6 deletions(-) >>>> >>>> >>>> >>>> diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>>> b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>>> >>>> index 2e73719dce04..3ef0380e084f 100644 >>>> >>>> --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>>> >>>> +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c >>>> >>>> @@ -90,6 +90,7 @@ SetGcdMemorySpaceAttributes ( >>>> >>>> UINTN EndIndex; >>>> >>>> EFI_PHYSICAL_ADDRESS RegionStart; >>>> >>>> UINT64 RegionLength; >>>> >>>> + UINT64 Capabilities; >>>> >>>> >>>> >>>> DEBUG (( >>>> >>>> DEBUG_GCD, >>>> >>>> @@ -146,14 +147,56 @@ SetGcdMemorySpaceAttributes ( >>>> >>>> RegionLength = MemorySpaceMap[Index].BaseAddress + >>>> MemorySpaceMap[Index].Length - RegionStart; >>>> >>>> } >>>> >>>> >>>> >>>> + // Always add RO, RP, and XP as all memory is capable of >>>> supporting these types (they are software >>>> >>>> + // constructs, not hardware features) and they are critical to >>>> maintaining a security boundary >>>> >>>> + Capabilities = MemorySpaceMap[Index].Capabilities | >>>> EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP; >>>> >>>> + >>>> >>>> // >>>> >>>> - // Set memory attributes according to MTRR attribute and the >>>> original attribute of descriptor >>>> >>>> + // Update GCD capabilities as these may have changed in the >>>> page table since the GCD was created >>>> >>>> + // this follows the same pattern as x86 GCD and Page Table syncing >>>> >>>> // >>>> >>>> - gDS->SetMemorySpaceAttributes ( >>>> >>>> - RegionStart, >>>> >>>> - RegionLength, >>>> >>>> - (MemorySpaceMap[Index].Attributes & >>>> ~EFI_MEMORY_CACHETYPE_MASK) | (MemorySpaceMap[Index].Capabilities & >>>> Attributes) >>>> >>>> - ); >>>> >>>> + Status = gDS->SetMemorySpaceCapabilities ( >>>> >>>> + RegionStart, >>>> >>>> + RegionLength, >>>> >>>> + Capabilities >>>> >>>> + ); >>>> >>>> + >>>> >>>> + if (EFI_ERROR (Status)) { >>>> >>>> + DEBUG (( >>>> >>>> + DEBUG_ERROR, >>>> >>>> + "%a - failed to update GCD capabilities: 0x%llx on memory >>>> region: 0x%llx length: 0x%llx Status: %r\n", >>>> >>>> + __func__, >>>> >>>> + Capabilities, >>>> >>>> + RegionStart, >>>> >>>> + RegionLength, >>>> >>>> + Status >>>> >>>> + )); >>>> >>>> + ASSERT_EFI_ERROR (Status); >>>> >>>> + continue; >>>> >>>> + } >>>> >>>> + >>>> >>>> + // >>>> >>>> + // Set memory attributes according to the page table attribute >>>> and the original attribute of descriptor >>>> >>>> + // >>>> >>>> + Status = gDS->SetMemorySpaceAttributes ( >>>> >>>> + RegionStart, >>>> >>>> + RegionLength, >>>> >>>> + (MemorySpaceMap[Index].Attributes & >>>> ~EFI_MEMORY_CACHETYPE_MASK) | (Attributes & Capabilities) >>>> >>>> + ); >>>> >>>> + >>>> >>>> + if (EFI_ERROR (Status)) { >>>> >>>> + DEBUG (( >>>> >>>> + DEBUG_ERROR, >>>> >>>> + "%a - failed to update GCD attributes: 0x%llx on memory >>>> region: 0x%llx length: 0x%llx Status: %r\n", >>>> >>>> + __func__, >>>> >>>> + Attributes, >>>> >>>> + RegionStart, >>>> >>>> + RegionLength, >>>> >>>> + Status >>>> >>>> + )); >>>> >>>> + ASSERT_EFI_ERROR (Status); >>>> >>>> + continue; >>>> >>>> + } >>>> >>>> } >>>> >>>> >>>> >>>> return EFI_SUCCESS; >>>> >> >> >> >> > > > > ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2023-07-07 20:13 UTC | newest] Thread overview: 26+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-26 0:09 [edk2-devel][PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes Oliver Smith-Denny 2023-05-01 13:02 ` Ard Biesheuvel 2023-05-01 17:03 ` Oliver Smith-Denny 2023-05-01 17:49 ` [edk2-devel] [PATCH " Michael D Kinney 2023-05-01 17:50 ` Ard Biesheuvel 2023-05-01 17:53 ` Oliver Smith-Denny 2023-05-01 17:59 ` Michael D Kinney 2023-05-09 1:35 ` Ni, Ray 2023-05-09 2:03 ` Oliver Smith-Denny 2023-05-09 2:04 ` Michael D Kinney 2023-05-09 6:59 ` Ard Biesheuvel 2023-05-09 14:59 ` Oliver Smith-Denny 2023-05-10 16:10 ` Taylor Beebe 2023-05-16 2:53 ` Ni, Ray 2023-05-16 17:11 ` Oliver Smith-Denny 2023-05-17 7:14 ` Ni, Ray 2023-06-02 2:24 ` Michael Kubacki 2023-06-02 2:42 ` Ni, Ray 2023-06-02 3:09 ` Michael Kubacki 2023-06-02 9:31 ` Ard Biesheuvel 2023-06-06 2:13 ` Michael Kubacki 2023-06-06 3:00 ` Ni, Ray [not found] <1759538694580A69.7408@groups.io> 2023-06-07 16:10 ` [edk2-devel][PATCH " Oliver Smith-Denny 2023-06-07 17:31 ` Ard Biesheuvel 2023-06-07 18:03 ` Oliver Smith-Denny [not found] ` <176672827230FBF7.32008@groups.io> 2023-07-07 20:13 ` Oliver Smith-Denny
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox