Reviewed-by: Michael Kinney <michael.d.kin...@intel.com>

> -----Original Message-----
> From: Yao, Jiewen
> Sent: Monday, November 23, 2015 5:13 AM
> To: edk2-de...@ml01.01.org
> Cc: Yao, Jiewen <jiewen....@intel.com>; Fan, Jeff <jeff....@intel.com>; 
> Kinney, Michael D <michael.d.kin...@intel.com>
> Subject: [patch] UefiCpuPkg/PiSmmCpu: Correct TSS segment.
> 
> TSS segment should use (SIZE - 1) as limit, and do not set G bit (highest bit 
> of LimitHigh) because limit means byte count.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yao, Jiewen <jiewen....@intel.com>
> Cc: Fan, Jeff <jeff....@intel.com>
> Cc: Kinney, Michael D <michael.d.kin...@intel.com>
> ---
>  UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S   | 8 ++++----
>  UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm | 8 ++++----
>  UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S    | 4 ++--
>  UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm  | 4 ++--
>  4 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S 
> b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S
> index 69dfd94..4130bf5 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S
> @@ -82,18 +82,18 @@ CodeSeg64:
>  .equ  GDT_SIZE, .- NullSeg
> 
>  TssSeg:
> -            .word      TSS_DESC_SIZE       # LimitLow
> +            .word      TSS_DESC_SIZE -1    # LimitLow
>              .word      0                   # BaseLow
>              .byte      0                   # BaseMid
>              .byte      0x89
> -            .byte      0x80                # LimitHigh
> +            .byte      0x00                # LimitHigh
>              .byte      0                   # BaseHigh
>  ExceptionTssSeg:
> -            .word      TSS_DESC_SIZE       # LimitLow
> +            .word      TSS_DESC_SIZE - 1   # LimitLow
>              .word      0                   # BaseLow
>              .byte      0                   # BaseMid
>              .byte      0x89
> -            .byte      0x80                # LimitHigh
> +            .byte      0x00                # LimitHigh
>              .byte      0                   # BaseHigh
> 
>  .equ  CODE_SEL,          CodeSeg32 - NullSeg
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm 
> b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm
> index 65a120e..b4eb492 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm
> @@ -85,18 +85,18 @@ CodeSeg64   LABEL   QWORD
>  GDT_SIZE = $ - offset NullSeg
> 
>  TssSeg      LABEL   QWORD
> -            DW      TSS_DESC_SIZE       ; LimitLow
> +            DW      TSS_DESC_SIZE - 1   ; LimitLow
>              DW      0                   ; BaseLow
>              DB      0                   ; BaseMid
>              DB      89h
> -            DB      080h                ; LimitHigh
> +            DB      00h                 ; LimitHigh
>              DB      0                   ; BaseHigh
>  ExceptionTssSeg     LABEL   QWORD
> -            DW      TSS_DESC_SIZE       ; LimitLow
> +            DW      TSS_DESC_SIZE - 1   ; LimitLow
>              DW      0                   ; BaseLow
>              DB      0                   ; BaseMid
>              DB      89h
> -            DB      080h                ; LimitHigh
> +            DB      00h                 ; LimitHigh
>              DB      0                   ; BaseHigh
> 
>  CODE_SEL          = offset CodeSeg32 - offset NullSeg
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S 
> b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S
> index 6dbcaa5..2ae6f2c 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S
> @@ -79,11 +79,11 @@ CodeSeg64:
>              .byte 0                     # BaseHigh
>  # TSS Segment for X64 specially
>  TssSeg:
> -            .word TSS_DESC_SIZE         # LimitLow
> +            .word TSS_DESC_SIZE - 1     # LimitLow
>              .word 0                     # BaseLow
>              .byte 0                     # BaseMid
>              .byte 0x89
> -            .byte 0xDB                  # LimitHigh
> +            .byte 0x00                  # LimitHigh
>              .byte 0                     # BaseHigh
>              .long 0                     # BaseUpper
>              .long 0                     # Reserved
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm 
> b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm
> index 3d841c6..ab71645 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm
> @@ -78,11 +78,11 @@ CodeSeg64   LABEL   QWORD
>              DB      0                   ; BaseHigh
>  ; TSS Segment for X64 specially
>  TssSeg      LABEL   QWORD
> -            DW      TSS_DESC_SIZE       ; LimitLow
> +            DW      TSS_DESC_SIZE - 1   ; LimitLow
>              DW      0                   ; BaseLow
>              DB      0                   ; BaseMid
>              DB      89h
> -            DB      080h                ; LimitHigh
> +            DB      00h                 ; LimitHigh
>              DB      0                   ; BaseHigh
>              DD      0                   ; BaseUpper
>              DD      0                   ; Reserved
> --
> 1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to