# GPU-Z on VMware UEFI 2.31 machine



## techuser (May 7, 2020)

Why does GPU-Z show that the VMware SVGA 3D graphics card in VMware 14 is not UEFI compliant?

The machine has Win10 64-bit installed in UEFI + Secure Boot mode (see machine settings and information from the AIDA64 program)
The Uefiinfo.efi program in EFI Shell shows that the lack of CSM and GPU-Z shows that the card is not compatible with UEFI.
What is going on?


----------



## W1zzard (May 7, 2020)

I don't think GPU-Z can detect VMWare UEFI support properly because it needs to read the VBIOS, let me look into that.


----------



## techuser (May 7, 2020)

I believe that UEFI in VMware 14 is not pure UEFI class 3 because in memory at address C0000 is vbios legacy.

On a real UEFI computer with a GOP graphics card e.g. AMD HD7450, when we turn off CSM in the bios, it is empty memory at C0000 - all zeros or FF FF FF ...


----------



## W1zzard (May 7, 2020)

Correct, any idea if/where I can find the BIOS in memory?


----------



## techuser (May 7, 2020)

W1zzard said:


> Correct, any idea if/where I can find the BIOS in memory?


At C0000 address , e.g. RW - Read & Write Utility 64-bit
The size of the vbios is in the third byte after 55 AA -> 80h

80h x 200h = 10000h (65536 bytes)

C0000h + 10000h = D0000h - 1h = CFFFFh < end address:


P.S. AIDA64 also can dump the vbios to a file.

Correction - at C0000 there is probably EFI bios which is only 5C2h (1.4KB)

but I don't understand why it is under C0000 in memory ???


----------



## W1zzard (May 7, 2020)

techuser said:


> C0000


that's the legacy BIOS, I doubt it's only 64K in actual size.. let me test in a VM


----------



## techuser (May 7, 2020)

W1zzard said:


> that's the legacy BIOS, I doubt it's only 64K in actual size.. let me test in a VM


Under VMware 14 launched in UEFI with Secure Boot (or without) at C0000 is not bios legacy - look at my previous screenshot and string:

```
VMware VMware EFI VESA SVGA 1.01
```


----------



## techuser (Mar 19, 2021)

It looks like virtual machines (VMware, VBox or QEMU with OVMF bios) don't seem to use GOP. They use fake INT10 (minimal rom) in UEFI mode which they insert under C0000 memory:

OVMF bios:

```
000C0000   56 45 53 41 00 03 22 00 00 C0 01 00 00 00 27 00   VESA..".......'.
000C0010   00 C0 30 00 00 00 2B 00 00 C0 30 00 00 C0 3D 00   ..0...+...0...=.
000C0020   00 C0 51 45 4D 55 00 F1 00 FF FF 4F 56 4D 46 00   ..QEMU.....OVMF.
000C0030   51 45 4D 55 20 51 58 4C 20 56 47 41 00 4F 56 4D   QEMU QXL VGA.OVM
000C0040   46 20 49 6E 74 31 30 68 20 28 66 61 6B 65 29 00   F Int10h (fake).
000C0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
000C0060   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
```

VMware:

```
000C0000   55 AA 80 CB B8 05 4F 80 FC 00 74 09 80 FC 4F 0F   U.....O...t...O.
000C0010   84 AC 00 CF CF 3C 03 0F 84 A0 00 3C 12 75 F5 60   .....<.....<.u.`
000C0020   66 50 BA 40 21 66 B8 01 00 00 00 66 EF 42 FE C8   fP.@!f.....f.B..
000C0030   66 EF 66 58 BA C2 03 B0 E3 EE BA C6 03 B0 FF EE   f.fX............
000C0040   BA C8 03 31 C0 EE 42 B9 40 00 E8 82 03 FE C4 E2   ...1..B.@.......
000C0050   F9 BF 08 04 B9 05 00 BA C4 03 E8 66 03 BF 3B 04   ...........f..;.
000C0060   B9 09 00 BA CE 03 E8 5A 03 BF 26 04 B9 15 00 BA   .......Z..&.....
000C0070   DA 03 BB C0 03 30 C0 50 EC 58 87 DA EE 50 2E 8A   .....0.P.X...P..
000C0080   05 47 EE 58 FE C0 87 DA E2 ED EC 87 DA B0 20 EE   .G.X.......... .
000C0090   BF 0D 04 B9 19 00 BA D4 03 B8 11 7F 2E 22 65 11   ............."e.
000C00A0   EF E8 1F 03 06 B8 00 A0 8E C0 FC BF 00 00 B9 00   ................
000C00B0   80 31 C0 F3 AB 07 61 B8 50 00 CF B8 50 00 CF 3C   .1....a.P...P..<
000C00C0   00 74 1C 3C 01 0F 84 88 00 3C 02 0F 84 A8 01 3C   .t.<.....<.....<
000C00D0   03 0F 84 2E 02 3C 09 0F 84 31 02 B8 4F 01 CF 66   .....<...1..O..f
000C00E0   50 1E 8C C0 8E D8 66 8B 05 66 2D 56 42 45 32 66   P.....f..f-VBE2f
000C00F0   C7 05 56 45 53 41 C7 45 04 00 02 C7 45 06 44 04   ..VESA.E....E.D.
000C0100   8C 4D 08 66 C7 45 0A 03 00 00 00 C7 45 0E 29 05   .M.f.E......E.).

000C0400   DB 81 C3 69 04 F9 5E C3 03 01 0F 00 06 5F 4F 50   ...i..^......_OP
000C0410   82 54 80 0B 3E 00 40 00 00 00 00 00 00 EA 8C DF   .T..>.@.........
000C0420   28 00 E7 04 E3 FF 00 01 02 03 04 05 14 07 38 39   (.............89
000C0430   3A 3B 3C 3D 3E 3F 01 00 0F 00 00 00 00 00 00 00   :;<=>?..........
000C0440   00 05 0F FF 56 4D 77 61 72 65 00 56 4D 77 61 72   ....VMware.VMwar
000C0450   65 00 45 46 49 20 56 45 53 41 20 53 56 47 41 00   e.EFI VESA SVGA.
000C0460   31 2E 30 30 2D 77 69 6E 00 20 00 80 02 E0 01 00   1.00-win. ......
000C0470   00 20 00 20 03 58 02 00 00 20 00 00 04 00 03 00   . . .X... ......
000C0480   00 20 00 80 04 60 03 00 00 20 00 00 05 C0 03 00   . ...`... ......
```


----------



## W1zzard (Mar 19, 2021)

Hmm for VMWare that could mean scan for "EFI" in that chunk of memory? Maybe "Int10h" for OVMF?


----------



## techuser (Mar 19, 2021)

VMware also uses INT10


----------



## W1zzard (Mar 20, 2021)

Int 10 is the standard VGA interrupt from DOS, I remember programming for it back in the day 





						INT 10H - Wikipedia
					






					en.wikipedia.org


----------



## techuser (Mar 20, 2021)

W1zzard said:


> Int 10 is the standard VGA interrupt from DOS, I remember programming for it back in the day


It is correct. INT10 is legacy but also works in UEFI as a fake INT10. Using the UefiSeven loader I can run WinXP SP2 64-bit (amd64) in pure UEFI class 3 on a computer with a graphics card that has GOP firmware but under C0000 there is a fake INT10 UefiSeven minimal ROM:

```
000C0000   56 45 53 41 00 03 22 00 00 C0 01 00 00 00 2C 00   VESA..".......,.
000C0010   00 C0 30 00 00 00 30 00 00 C0 3A 00 00 C0 47 00   ..0...0...:...G.
000C0020   00 C0 55 65 66 69 53 65 76 65 6E 00 F1 00 FF FF   ..UefiSeven.....
000C0030   55 65 66 69 53 65 76 65 6E 00 45 6D 75 6C 61 74   UefiSeven.Emulat
000C0040   65 64 20 56 47 41 00 4F 56 4D 46 20 49 6E 74 31   ed VGA.OVMF Int1
000C0050   30 68 20 28 66 61 6B 65 29 00 90 90 90 90 90 90   0h (fake).......
000C0060   90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90   ................
```

UefiSeven is based on VgaShim, VgaShim is based on OvmfPkg/QemuVideoDxe/VbeShim.c

WinXP 64-bit on pure UEFI


----------

