/* Reads the I/O port specified by Port with registers width specified by Width. The read value is returned. If such operations are not supported, then ASSERT(). This function must guarantee that all I/O read and write operations are serialized. */
UINT64 EFIAPI IoReadWorker(IN UINTN Port, IN EFI_SMM_IO_WIDTH Width)
/* Reads the I/O port specified by Port with registers width specified by Width. The read value is returned. If such operations are not supported, then ASSERT(). This function must guarantee that all I/O read and write operations are serialized. */
UINT64 EFIAPI IoReadWorker(IN UINTN Port, IN EFI_SMM_IO_WIDTH Width)
{
  EFI_STATUS  Status;
  UINT64      Data;
  Status = gSmst->SmmIo.Io.Read (&gSmst->SmmIo, Width, Port, 1, &Data);
  ASSERT_EFI_ERROR (Status);
  return Data;
}