summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2017-09-04 17:09:18 +0200
committerLaszlo Ersek <lersek@redhat.com>2017-09-11 22:28:05 +0200
commit98a4d04e8fda7c23c0cce1ac65597e8144bcb5b8 (patch)
tree4872c4780296664f3af756a921dd13e54e77115d /MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf
parentaa9aa47e06ac0082948b880c226c8bdf2a12102b (diff)
downloadedk2-98a4d04e8fda7c23c0cce1ac65597e8144bcb5b8.tar.gz
edk2-98a4d04e8fda7c23c0cce1ac65597e8144bcb5b8.tar.bz2
edk2-98a4d04e8fda7c23c0cce1ac65597e8144bcb5b8.zip
MdePkg/BaseIoLibIntrinsic: fix SEV (=unrolled) variants of IoWriteFifoXX()
In commit b6d11d7c4678 ("MdePkg: BaseIoLibIntrinsic (IoLib class) library", 2017-04-12), the MOV instructions in the write loops were probably copied from the read loops. However, the operand order was not adjusted. As a result, the IoWriteFifoXX() routines, when invoked in SEV guests, now overwrite the source buffer with value 0x01 / 0x0001 / 0x00000001 -- the SevNoRepIo() function returns value 1 in EAX, in SEV guests --, and write the same value to the target IO port. Fix this by putting the target operand (AL / AX / EAX) first, and the source operand (BYTE / WORD / DWORD [ESI/RSI]) second. Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Fixes: b6d11d7c467810ea7f2e2eda46ef0bdc57bf1475 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Diffstat (limited to 'MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf')
0 files changed, 0 insertions, 0 deletions