* [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
* 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
* 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