GithubHelp home page GithubHelp logo

ayeks / sgx-hardware Goto Github PK

View Code? Open in Web Editor NEW
590.0 44.0 129.0 155 KB

This is a list of hardware which supports Intel SGX - Software Guard Extensions.

License: MIT License

C 95.77% Ruby 3.00% Makefile 1.22%
intel sgx sgx-hardware

sgx-hardware's Introduction

SGX-hardware list

This is a list of hardware which supports Intel SGX - Software Guard Extensions.

Build Status

Desktop

The CPU and the motherboard BIOS must support SGX. SGX is turned off by default and must be enabled via MSR.IA32_Feature_Control.SGX_Enable. Only the BIOS can make changes to the IA32_Feature_Control.

Desktop CPUs affected by the product change notification from 2015

Use the ark.intel.com database to list all Intel CPUs that have the SGX feature.

Be cautious with the following 2015 i7,i5 and E3 CPUs. According to the Product Change Notification from October 1, 2015. Only the listed CPUs with the following S-Spec Numbers are able to execute SGX instructions. For all other CPUs the Intel CPU database should be correct.

Marketing Name Processor# Post-Conversion S-Spec
Intel® Core i7-6700K SR2L0
Intel® Core i5-6400T SR2L1
Intel® Core i7-6700 SR2L2
Intel® Core i7-6700T SR2L3
Intel® Core i5-6600K SR2L4
Intel® Core i5-6600 SR2L5
Intel® Core i5-6500 SR2L6
Intel® Core i5-6400 SR2L7
Intel® Core i5-6500T SR2L8
Intel® Core i5-6600T SR2L9
Intel® Xeon® E3-1280 v5 SR2LC
Intel® Xeon® E3-1240 v5 SR2LD
Intel® Xeon® E3-1230 v5 SR2LE
Intel® Xeon® E3-1270 v5 SR2LF
Intel® Xeon® E3-1220 v5 SR2LG
Intel® Xeon® E3-1260L v5 SR2LH
Intel® Xeon® E3-1225 v5 SR2LJ
Intel® Xeon® E3-1275 v5 SR2LK
Intel® Xeon® E3-1245 v5 SR2LL
Intel® Xeon® E3-1235L v5 SR2LM
Intel® Xeon® E3-1240L v5 SR2LN

Checkout Intel ARK specifications for newer CPU models with SGX support.

CPUs without Platform Service Enclave functionality

As per the last comment on this thread, Intel Xeon E3 processors as of today (Jul. 2017) do not have an Intel Management Engine. Therefore, the kernel will never be able to expose the device /dev/mei0. What this means in terms of SGX is that Trusted Platform Service Functions (monotonic counters, trusted time) are not available on Xeon E3.

The following sgx_tservice functions are not available:

    sgx_create_pse_session
    sgx_close_pse_session
    sgx_get_ps_sec_prop
    sgx_get_trusted_time
    sgx_create_monotonic_counter_ex
    sgx_create_monotonic_counter
    sgx_destroy_monotonic_counter
    sgx_increment_monotonic_counter
    sgx_read_monotonic_counter

@lacabra discussed a workaround in issue 43:

... And while not ideal, you can circumvent these, so you can arguably have fully capable SGX instances: you should be able to open a TLS connection to an NTP server you trust from within the enclave to obtain a source of trusted time. If you think of trusted monotonic counter as an instance of trusted time, you could get both using the same mechanism (these are suggestions from an Intel SGX architect).

Desktop Mainboards

Vendor Model Driver Type Version Source Release Date
ASRock E3V5 WS BIOS 7.10 see Issue 13 03 Feb 2017
ASRock Z270 Extreme 4 - - see Issue 15 2017
ASRock Z370 Gaming ITX BIOS 1.4 see Issue 36 2017
MSI H170 Gaming M3 Board BIOS - see Issue 21 4 May 2017
Gigabyte GA-Z270MX-Gaming 5 BIOS F3 see Issue 20 4 May 2017
Gigabyte Z370 AORUS Ultra Gaming (rev. 1.0) BIOS - see Issue 33 30 Nov 2017
Gigabyte Z370 AORUS Ultra Gaming (rev. 2.0) BIOS F4 see Issue 53 1 Oct 2018
MAXSUN MS-EARTHSHAKER H310M-VH - - see Issue 54 about the outdated BIOS! 10 Oct 2018
MSI Z370-A PRO Bios update required - see Issue 56 28 Dec 2018
ASRock Z390 Pro 4 BIOS 4.3 see Issue 64 16 Sep 2019

Notebooks

The following devices should support SGX according to available drivers. Check the detailed information about the supported models on the individual driver sites.

Vendor Model Driver Type Version Supported OS Source Release Date
Dell Inspiron 11 i3153, Inspiron 11 i3158, Inspiron 13 i7353, Inspiron 13 i7359, Inspiron 15 i7568 Chipset Driver 1.0.26920. 1393, A00 Windows 8.1 64-bit, Windows 10 64-bit dell.com 10 Sep 2015
Dell Inspiron 15 7000 Series 7559 BIOS 1.0.3 Windows/DOS dell.com 09 Oct 2015
HP HP 240 G4 Notebook PC, HP 246 G4 Notebook PC, HP Notebook 14g, HP Notebook 14q Chipset 1.0.26448. 1348 REV: A PASS: 5 Microsoft Windows 10 64 ftp.hp.com 07 Aug 2015
HP ENVY 15 Notebook PC Chipset 1.0.26805. 1389 REV: A PASS: 4 Windows 10 64bit, Windows 7 Prof. ftp.hp.com 17 Aug 2015
HP HP ENVY x360 Convertible Chipset 1.0.26805.1389 REV: A PASS: 5 Windows 10 64 ftp.hp.com 04 Sep 2015
HP HP Spectre x2 Detachable Ultrabook PC Chipset 1.0.26805. 1389 REV: A PASS: 9 Windows 10 64 ftp.hp.com 02 Oct 2015

Hardware with out-of-the-box SGX support

Newer devices have out of the box SGX BIOS support. Sometimes it is mentioned in their documentation. If you have a newer device and see SGX in the BIOS, message me so I can add the device to the list. If you need a SGX capable server have a look at the Intel SGX server block. It consists of a complete server with Xeon processor, ram, mainboard and drives. Driver issues should't be a problem.

Device Vendor Model Source Date Confirmed
Laptop Lenovo ThinkPad P70, P50S, T560, T460p, T460s, T460, X260, X230 see Issue 7 22 May 2016 P50, T460s, X260, X230
Laptop Lenovo YOGA 720, Carbon X1 see Issue 49 2 Jul 2018 YOGA 720, Carbon X1
Laptop Lenovo Ideapad Yoga C940 see issue 77 13 Mar 2021 Ideapad Yoga C940
PC Dell newer OptiPlex, Latitude, Vostro, Precision see Issue 5 20 Apr 2015 Precision 7710
Desktop PC Dell Optiplex 5040 dell.com technical-spec-sheet.pdf 3 Dec 2015
Laptop Dell XPS 13 see Issue 12, see Issue 16, Issue 69, Issue 75 20 Jan 2017 XPS 13 9560, 9360, 9380
Laptop Dell Alienware 13 R3 mail 30 Jan 2017 Alienware 13 R3 (Kaby Lake i7-7700HQ)
Laptop Dell Alienware 15 R3 see PR 30 05 Sep 2017 Alienware 15 R3 (Skylake i7-6820HK)
Laptop Dell Inspiron 5378, 5578, 7378, 7579, 7779 see Issue 18 18 Apr 2017 Inspiron 15 5578 2-in-1 with Intel Kabylake 7500U
Laptop Dell Latitude 7280 see Issue 52 26 Sep 2018 Dell Latitude 7280
Laptop Dell Precision 5750 PR 86 17 Jan 2022 Dell Precision 5750 with Intel Xeon W-10885M
Mini PC Intel NUC Kit NUC6i3SYK, NUC6i7KYK, NUC6i5SYK, NUC6i3SYH, NUC6i5SYH, NUC7i3BNH, NUC8i5BEK SGX software for NUC 30 Jun 2016 NUC7i3BNH, NUC8i5BEK
Compute Stick Intel Compute Stick STK2m364CC see Issue 31 12 Nov 2017 STK2m364CC
Laptop HP Pavilion 15-ab251ur see Issue 14 18 Feb 2017 HP Pavilion 15-ab251ur, CPU i7-6500U
Laptop ASUS X456UA see Issue 18 18 Apr 2017
Workstation HP Z2 Mini G3 see Pull request 19 21 Apr 2017 HP Z2 Mini G3, CPU Xeon E3-1245 v5
Workstation HP HP Z240 Tower Workstation see Pull request 23 16 Mar 2017 HP Z240 Tower Workstation, Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz
Server Supermicro system 5019-MR, mainboard X11SSH-F BIOS 1.0b or 2.0b Pressrelease see Issue 6 19 May 2016 platform services only on specific ME versions
Server Dell PowerEdge R230, BIOS 2.4.3 or later mail 23 Feb 2018 Dell R230, CPU Xeon 1270 v6, BIOS v2.4.3 and BIOS v2.5.0
Server Dell PowerEdge R340, BIOS 2.2.3 see Issue 70 16 May 2020 Dell PowerEdge R340
Server HPE ProLiant DL20 Gen10 PR 88 22 Jan 2022 HPE ProLiant DL20 Gen10 with Xeon E-2276G
Mini PC Intel NUC Kit NUC7i5BNH see Issue 67 9 Oct 2019 NUC7i5BNH with I5-7260U
Server Dell PowerEdge R330 Simply Staking's Testing (only works baremetal) Dec 2020 Dell PowerEdge R330
Server Dell PowerEdge R340 Simply Staking's Testing (works baremetal and with vSphere 7 vSGX) Dec 2020 Dell PowerEdge R340 (Intel Xeon E-2288G)
Mini PC Intel NUC Kit NUC10i3FNKN PR #90 Apr 2022 NUC10i3FNKN, Intel Core i3-10110U
Desktop PC Dell Optiplex 7070 SFF PR #90 Apr 2022 Optiplex 7070, Intel Core i5-9500 CPU
Mini PC Intel NUC Kit NUC8i7HNK see Issue 97 Aug 2022 NUC8i7HNK with i7-8705G

Hardware with SGX2 support

It seems that Intel Gemini Lake processors support SGX2. We will list the confirmed devices here as soon as they get reported.

Device Vendor Model Source Date Confirmed
Mini PC Intel NUC Kit NUC7CJYH, NUC7PJYH Issue 48, Pull Request 68 4 Apr 2019 NUC7CJYH, NUC7PJYH
Laptop Dell XPS 13 9300 Issue 75 24 Feb 2021 XPS 13 9300
Laptop Lenovo Ideapad Yoga C940 Issue 77 13 Mar 2021 Ideapad Yoga C940
Server SuperMicro X12SPM-TF PR 87 18 Jan 2022 SuperMicro X12SPM-TF with Xeon Gold 5315Y

Cloud Vendors

Packet.net, IBM and Alibaba have Bare Metal Instances available that allow the execution of SGX instructions to create secure enclaves in the cloud. See IBM Cloud Bare Metal Instances and Alibaba ECS Bare Metal Instance. If you were able to experiment with SGX in the Cloud, please let us know!

Both AWS and Google have CPUs that capable of SGX but the execution is disabled. We discussed that into detail here. According to a Intel forum post.

Vendor Servicename CPU SGX capable SGX activated in BIOS Date Source
AWS EC2 C5 instances YES, SGX1 and SGX2 NO, SGX not activated in BIOS Apr 2018 Issue 37
Azure Azure Confidential Computing YES, SGX1 YES, SGX1 Oct 2023 Blog
Google N1 instances YES, SGX1 and SGX2 NO, SGX not activated in BIOS Apr 2018 Issue 38
IBM IBM Cloud Bare Metal Instances YES, unknown version YES May 2018 Issue 46
packet.net Reserved Hardware YES, SGX1 YES Apr 2018 Issue 44
Alibaba Cloud ECS Bare Metal Instance YES, unknown version YES Sep 2018 Docs, Issue 50
OVHcloud Infrastructure Dedicated Servers YES, unknown version YES Sep 2019 Docs, Issue 66
Alibaba Cloud ECS Security-enhanced family (public preview) YES, SGX2 YES July 2021 Docs

Notes:

Device with a SGX CPU, but no BIOS support

The following devices have a SGX capable CPU included, but don't have the required BIOS settings. So you cannot execute SGX instructions on those devices. Do NOT buy for SGX development:

Device Vendor Model Source Date
Laptop Apple MacBook Pro (15-inch, 2017) Issue 26 24 Jul 2017
Laptop Apple MacBook Pro (15-inch, 2018) Issue 57 15 Feb 2019
Laptop Apple MacBook Pro (13-inch, 2018) Issue 58 25 Feb 2019
Laptop Apple MacBook Pro (16-inch, 2019) PR 85 22 Dec 2021
Laptop Microsoft Surface Book 2 Issue 52 26 Sep 2018
Laptop Razer Blade (2016) Issue 60 6 Jul 2019

Compile test-sgx

You can check if SGX is enabled on you system with test_sgx.c. Just compile and run it:

  • Linux / gcc 13.1
gcc -Wl,--no-as-needed -Wall -Wextra -Wpedantic -masm=intel -o test-sgx -lcap cpuid.c rdmsr.c xsave.c vdso.c test-sgx.c
  • Windows 11 / Visual Studio 2022 (x64 Native Tools)
cl test-sgx.c cpuid.c rdmsr.c xsave.c vdso.c
  • MacOS / Clang 15
clang -Wall -Wextra -Wpedantic -masm=intel -std=c2x -Wno-gnu-binary-literal -o test-sgx cpuid.c rdmsr.c xsave.c vdso.c test-sgx.c

See Issue 17 for the execution in Visual Studio.

SGX is available for your CPU but not enabled in BIOS

eg. on 2017 MacBook Pro's

...
Supports SGX
SGX Launch Configuration (SGX_LC): 1
SGX Attestation Services (SGX_KEYS): 0
SGX1 leaf instructions (SGX1): 0
SGX2 leaf instructions (SGX2): 0
...

CPU SGX functions are deactivated or SGX is not supported

Eg. on public clouds or 2015 MacBooks Pro's)

...
Does not support SGX

SGX1 is available for your CPU and enabled in BIOS

Start test-sgx (version 2.0.0) at Mon Nov 20 18:20:43 2023
CPUID is available
The CPU is Genuine Intel
CPUID is capable of examining SGX capabilities
CPU: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
  Stepping 13        Model 14           Family 6 
  Processor type 0   Extended model 9   Extended family 0 
Safer Mode Extensions (SMX): 1
Extended feature bits (EAX=7, ECX=0): eax: 00000000  ebx: 029c6fbf  ecx: 40000000  edx: bc000e00
Supports SGX
SGX Launch Configuration (SGX_LC): 1
SGX Attestation Services (SGX_KEYS): 0
SGX1 leaf instructions (SGX1): 1
SGX2 leaf instructions (SGX2): 0
EINCVIRTCHILD, EDECVIRTCHILD, and ESETCONTEXT (OVERSUB-VMX): 0
ETRACKC, ERDINFO, ELDBC, and ELDUC (OVERSUB-Supervisor): 0
EVERIFYREPORT2: 0
Allow attestation w/ updated microcode (EUPDATESVN): 0
Allow enclave thread to decrement TCS.CSSA (EDECCSSA): 1
Supported Extended features for MISC region of SSA (MISCSELECT) 0x00000000
The maximum supported enclave size in non-64-bit mode is 2^31
The maximum supported enclave size in     64-bit mode is 2^36
Raw ECREATE SECS.ATTRIBUTES[63:0]: 00000000 00000436
    ECREATE SECS.ATTRIBUTES[DEBUG] (Debugger can read/write enclave data w/ EDBGRD/EDBGWR): 1
    ECREATE SECS.ATTRIBUTES[MODE64BIT] (Enclave can run as 64-bit): 1
    ECREATE SECS.ATTRIBUTES[PROVISIONKEY] (Provisioning key available from EGETKEY): 1
    ECREATE SECS.ATTRIBUTES[EINITTOKEN_KEY] (EINIT token key available from EGETKEY): 1
    ECREATE SECS.ATTRIBUTES[CET] (Enable Control-flow Enforcement Technology in enclave): 0
    ECREATE SECS.ATTRIBUTES[KSS] (Key Separation and Sharing Enabled): 0
    ECREATE SECS.ATTRIBUTES[AEXNOTIFY] (Threads may receive AEX notifications): 1
Raw ECREATE SECS.ATTRIBUTES[127:64] (XFRM: Copy of XCR0): 00000000 0000001f
EPC[0]: Protection: ci  Base phys addr: 0000000070200000  size: 0000000005d80000
vDSO base address: 0x7ffddbf41000
Printing Symbol Table:
vDSO symbol: __vdso_time
vDSO symbol: getcpu
vDSO symbol: __vdso_clock_getres
vDSO symbol: __vdso_getcpu
vDSO symbol: clock_getres
vDSO symbol: __vdso_gettimeofday
vDSO symbol: LINUX_2.6
vDSO symbol: gettimeofday
vDSO symbol: __vdso_clock_gettime
vDSO symbol: time
vDSO symbol: __vdso_sgx_enter_enclave
vDSO symbol: clock_gettime
Raw IA32_FEATURE_CONTROL: 0000000000060005
    IA32_FEATURE_CONTROL.LOCK_BIT[bit 0]: 1
    IA32_FEATURE_CONTROL.SGX_LAUNCH_CONTROL[bit 17] (Is the SGX LE PubKey writable?): 1
    IA32_FEATURE_CONTROL.SGX_GLOBAL_ENABLE[bit 18]: 1
The SGX Launch Enclave Public Key Hash can be changed
IA32_SGXLEPUBKEYHASH: 72d712fed48f9f2f 5282ca7175d8f132 e40577fe4e7127ca c4e8225afdcf2262
Raw IA32_SGX_SVN_STATUS: 0000000e00020001
MSR_SGXOWNEREPOCH not readable
XSAVE features and state-components
  Maximum size (in bytes) of current XCR0 XSAVE area: 1088
  Maximum size (in bytes) of all-set XCR0 XSAVE area: 1088
  Size (in bytes) of current XCR0+IA32_XSS XSAVE area: 960
  Supported XCR0:     000000000000001f
  Actual    XCR0:     000000000000001f
  Supported IA32_XSS: 0000000000000100
  Actual    IA32_XSS: 0000000000000000
    Register Name    Supported Value Description
    ======== ======= ========= ===== ===========
    XCR0     x87:       yes      set x87 Floating Point Unit & MMX
    XCR0     SSE:       yes      set MXCSR and XMM registers
    XCR0     AVX:       yes      set YMM registers
    XCR0     BNDREG:    yes      set MPX for BND registers
    XCR0     BNDCSR:    yes      set MPX for BNDCFGU and BNDSTATUS registers
    XCR0     opmask:     no    clear AVX-512 for AVX opmask and AKA k-mask
    XCR0     ZMM_hi256:  no    clear AVX-512 for the upper-halves of lower ZMM registers
    XCR0     Hi16_ZMM:   no    clear AVX-512 for the upper ZMM registers
    IA32_XSS PT:        yes    clear Processor Trace
    XCR0     PKRU:       no    clear User Protection Keys
    IA32_XSS PASID:      no    clear Process Address Space ID
    IA32_XSS CET_U:      no    clear Control-flow Enforcement Technology: user-mode functionality MSRs
    IA32_XSS CET_S:      no    clear CET: shadow stack pointers for rings 0,1,2
    IA32_XSS HDC:        no    clear Hardware Duty Cycling
    IA32_XSS UINTR:      no    clear User-Mode Interrupts
    IA32_XSS LBR:        no    clear Last Branch Record
    IA32_XSS HWP:        no    clear Hardware P-state control
    XCR0     TILECFG:    no    clear AMX - Advanced Matrix Extensions
    XCR0     TILEDATA:   no    clear AMX - Advanced Matrix Extensions
    XCR0     APX:        no    clear Extended General Purpose Registers R16-R31
  Supported XSAVE feature flags: 0000000f
    xsaveopt - save state-components that have been modified since last XRSTOR: 1
    xsavec - save/restore state with compaction: 1
    xgetbv_ecx1 - XGETBV with ECX=1 support: 1
    xss - save/restore state with compaction, including supervisor state: 1
    xfd - Extended Feature Disable supported: 0
End test-sgx

That means that you are now able to call the special SGX calls of your CPU. However you will always need the official Intel SGX Drivers including their Launch Enclave to initiate your own enclaves. To be able to execute SGX functions you need both Supports SGX and SGX[1|2] leaf instructions (SGX[1|2]): 1.

Another hint that SGX functions are working is the output of an enclave size eg. The maximum supported enclave size is set.

Contribution

Add more hardware to this list via pull requests or simply via issues.

sgx-hardware's People

Contributors

achamayou avatar ayeks avatar brookemaeda avatar castleguarders avatar dingelish avatar duanbing avatar eliyanak avatar florianbecker avatar hyunsooda avatar jiazhang0 avatar lacabra avatar marknelsonengineer avatar metebalci avatar mhaehnel avatar renovate-bot avatar riebart avatar rur0 avatar schradeyannik avatar therainisme avatar torao avatar tworec avatar yuguorui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sgx-hardware's Issues

Hardware Report: IBM Cloud

IBM Cloud Data Guard provides cloud computing infrastructure with support for Intel's SGX. Through IBM Cloud one can contract a single processor bare metal server with SGX support, with the following minimum configuration for $276/month (as of May 2018):

  • Processor XEON - E3-1270-v6 Quad Core
  • 8 GB RAM
  • HD 1TB SATA
  • 500 GB public bandwidth
  • 100 Mbps Public & Private Network Uplinks
  • OS: Ubuntu Linux 16.04 LTS Xenial Xerus (64 bit)

Here's the report from an instance with the above specifications:

eax: 906e9 ebx: 7100800 ecx: 7ffafbff edx: bfebfbff
stepping 9
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 80200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

SGX capabilities are fully functional and I was able to install sgx-linux-driver, and the sgx-linux SDK, and run code inside the enclave. As mentioned in this README, this processor is part of the Xeon E3 family, which means that the Trusted Platform Service Functions (monotonic counters, trusted time) are not available. Otherwise it works as expected.

Issue referenced in #37.

Hardware Report: Razer Blade (Late 2016)

This is a gaming laptop with an Intel Core i7-6700HQ (which does support SGX according to this). However there is no option in the BIOS :(

Below is the report:

eax: 506e3 ebx: 1100800 ecx: 7ffafbbf edx: bfebfbff
stepping 3
model 14
family 6
processor type 0
extended model 5
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 9c002400
sgx available: 1
sgx launch control: 0

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 0 ebx: 0 ecx: 0 edx: 0
sgx 1 supported: 0
sgx 2 supported: 0
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Lenovo ThinkPad P50 works

Hardware Report: Amazon C5 instances (c5.large)

Amazon announced on 11/30/2016 the addition of Amazon EC2 C5 instances in early 2017 powered by Intel Xeon Skylake that comes with SGX capabilities. Here's the report from a c5.large running Ubuntu 16.04:

eax: 50653 ebx: 1040800 ecx: fffa3203 edx: 1f8bfbff
stepping 3
model 5
family 6
processor type 0
extended model 5
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: d19f4fbb ecx: 8 edx: 0
sgx available: 0

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 2ff ebx: a80 ecx: a88 edx: 0
sgx 1 supported: 1
sgx 2 supported: 1
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: f ebx: a00 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 100 ebx: 240 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 40 ebx: 3c0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 40 ebx: 400 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 40 ebx: 440 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 200 ebx: 480 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 400 ebx: 680 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 8 ebx: a80 ecx: 0 edx: 0

Because of the fact that is cloud infrastructure, getting access to tweak the BIOS seems highly unlikely. I tried installing the linux-sgx-driver, which did install but remains unused, and installed linux-sgx SDK & PSW, and the SampleEnclave code returns Intel SGX is not supported by this processor., which I believe is not technically true (instead of saying that SGX needs to get enabled through the BIOS).

Any ideas for things I could try or investigate further?

Thanks for the awesome work on this repo, BTW. Much appreciated!

Modify BIOS for Macbook to enable SGX

Is it possible to modify the BIOS for Macbook Pro to make it support Intel SGX on Linux?

BIOS update blobs of Mac are encrypted, so SPI programmer is needed to dump a complete binary.

Pentium G4400 works on ASRock E3V5 WS

The test program indicates that I have working SGX with a Pentium G4400 SR2DC on an ASRock E3V5 WS motherboard. I don't know if a BIOS update is necessary or not because I immediately updated to the latest BIOS (7.10 at this time) as soon as I got it.

eax: 506e3 ebx: 2100800 ecx: 4ffaebbf edx: bfebfbff
stepping 3
model 14
family 6
processor type 0
extended model 5
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 2942607 ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 3 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 90200001 ebx: 0 ecx: 5e00001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Newer Dell Laptops support SGX out of the box

It seems that newer Dell Laptops support SGX out of the box without any update. Just check the BIOS for any SGX option. At least the Dell Precision 17 7000 Series (7710) got that option.

According to different user manuals it seems that you can turn on SGX on the following models.
Source: http://pilot.search.dell.com/sgx

  • Dell OptiPlex 3040
  • Dell OptiPlex 3040M
  • Dell OptiPlex 3240
  • Dell OptiPlex 5040
  • Dell OptiPlex 7040
  • Dell OptiPlex 7040M
  • Dell Latitude E5270
  • Dell Latitude E5470
  • Dell Latitude E5570
  • Dell Vostro 24–5450
  • Dell Vostro 3653
  • Dell Vostro 3650
  • Dell Precision 3510
  • Dell Precision Tower 3620

If you want to make sure that SGX works on these systems compile and execute the /test-sgx.c

Feel free to discuss you findings regarding newer Dell computers and SGX support here. :)

Hardware Report: MacBook Pro (15-inch, 2018)

eax: 906ea ebx: 8100800 ecx: 7ffafbff edx: bfebfbff
stepping 10
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 40000000 edx: 9c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 0 ebx: 0 ecx: 0 edx: 0
sgx 1 supported: 0
sgx 2 supported: 0
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Hardware Report: MacBook Pro (13-inch, 2018)

eax: 806ea ebx: 6100800 ecx: 7ffafbbf edx: bfebfbff
stepping 10
model 14
family 6
processor type 0
extended model 8
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c67af ecx: 0 edx: 9c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 0 ebx: 0 ecx: 0 edx: 0
sgx 1 supported: 0
sgx 2 supported: 0
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Some SGX enabled hardware

Dell : Inspiron 15 5578 2-in-1 with Intel Kabylake 7500U has Intel SGX support in BIOS.
Intel SGX Platform Capability Tool says

Intel(R) Software Guard Extensions Platform Capability Tool Version 0.1.1.0


Tue Apr 18 21:55:22 2017

CPU Brand String: "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz"
Processor signature: 0x806e9
Processor type: 0x0
Extended Family: 0x0
Family: 0x6
Extended Model: 0x8
Model: 0xe
Stepping: 0x9

Intel(R) SGX is currently enabled on your platform.


Press any key to continue . . .

I had to enable it in BIOS manually, it was disabled by default.

In addition Dell's support said (I can not confirm that) that Dell Inspiron of models
5378,5578,7378,7579,7779 should definitely have BIOS SGX support.

I also received the following answer from ASUS support:

This response is in relation to your recent inquiry about the X456UA notebook's support for Intel® SGX Platform Software. Our technical team has confirmed that it would support the software based on the checks completed.

Hardware Report: Google Cloud Skylake

Somewhat similar to #37, Google Cloud now also supports Intel Xeon Skylake CPUs with SGX support. The following report was generated from a n1-standard-1 (1 vCPU, 3.75 GB memory) based on Intel Skylake, running Ubuntu 16.04:

eax: 50653 ebx: 20800 ecx: fefa3203 edx: 1f8bfbff
stepping 3
model 5
family 6
processor type 0
extended model 5
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: d19f6ffb ecx: 0 edx: 0
sgx available: 0

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: ff ebx: a80 ecx: a80 edx: 0
sgx 1 supported: 1
sgx 2 supported: 1
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: f ebx: a00 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 100 ebx: 240 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 40 ebx: 3c0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 40 ebx: 400 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 40 ebx: 440 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 200 ebx: 480 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 400 ebx: 680 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

HP Pavilion 15-ab251ur (i7-6500U)

A laptop HP Pavilion 15-ab251ur, CPU i7-6500U supports SGX:

eax: 406e3 ebx: 3100800 ecx: 7ffafbbf edx: bfebfbff
stepping 3
model 14
family 6
processor type 0
extended model 4
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c67af ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 70200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPU:

Processor Information
        Socket Designation: U3E1
        Type: Central Processor
        Family: Core i7
        Manufacturer: Intel(R) Corporation
        ID: E3 06 04 00 FF FB EB BF
        Signature: Type 0, Family 6, Model 78, Stepping 3
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (FXSAVE and FXSTOR instructions supported)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Multi-threading)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz
        Voltage: 0.8 V
        External Clock: 100 MHz
        Max Speed: 2600 MHz
        Current Speed: 2000 MHz
        Status: Populated, Enabled
        Upgrade: Socket BGA1168
        L1 Cache Handle: 0x0006
        L2 Cache Handle: 0x0007
        L3 Cache Handle: 0x0008
        Serial Number: To Be Filled By O.E.M.
        Asset Tag: To Be Filled By O.E.M.
        Part Number: To Be Filled By O.E.M.
        Core Count: 2
        Core Enabled: 2
        Thread Count: 4
        Characteristics:
                64-bit capable
                Multi-Core
                Hardware Thread
                Execute Protection
                Enhanced Virtualization
                Power/Performance Control

More Lenovo laptops support

Hi,

I'm running SGX on both Lenovo YOGA 720 and Lenovo Carbon X1 (both have an option in the BIOS and I develop SGX code on them (HW Mode))

SGX-hardware report "SGX is available for your CPU and enabled in BIOS" but can't run Remote Attestation sample

Hi I've a MS-EARTHSHAKER H310M-VH (a very cheap motherboard) with Core i5 8400, SGX-hardware report:

eax: 906ea ebx: 6100800 ecx: 7ffafbbf edx: bfebfbff
stepping 10
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c67af ecx: 40000000 edx: 9c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 50200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

I think this means "SGX is available for your CPU and enabled in BIOS" and I installed latest pre-built SGX driver, PSW and SDK on a fresh Ubuntu 18.04.1.

Then I ran sample codes which SDK provides, it works well except Remote Attestation sample,
the output is:

Call sgx_get_extended_epid_group_id success.
MSG0 body generated -
4 bytes:
{
0x0, 0x0, 0x0, 0x0 
}

Sending msg0 to remote attestation service provider.

Sent MSG0 to remote attestation service.

Call sgx_create_enclave success.
Call enclave_init_ra success.
sgx_ra_get_msg1 returns 4006
Error, call sgx_ra_get_msg1 fail [main].
Call enclave_ra_close success.
Enter a character before exit ...

I slightly modified the sample to exposing sgx_ra_get_msg1 return code, 4006 (SGX_ERROR_UPDATE_NEEDED) means Intel® SGX needs to be updated. (according to Error Codes)

I've googled SGX_ERROR_UPDATE_NEEDED or Intel® SGX needs to be updated. but not found any case, do you or someone report to you this situation? does it relates to BIOS?

C2059 syntax error 'volatile'

Hi, first thanks for the code snippet.
I have VS 2015 Community Ed. installed on Windows 10, but when I try to compile the code (in file test.cpp) it gives the compilation error: C2059 syntax error 'volatile'
The command I used is cl /EHsc test.cpp
Am I missing something?

ASRock Z390 Pro4 motherboard has support

The ASRock Z390 Pro 4 with BIOS version 4.3 has support. Earlier BIOS versions may also support SGX, I only tested with this one.

Here is the output with an i7-9700k:

eax: 906ed ebx: 8100800 ecx: 7ffafbff edx: bfebfbff
stepping 13
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 40000000 edx: bc000400
sgx available: 1
sgx launch control: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 80200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Intel SGX2 support

Intel SGX 2 related stuff can be discussed in this issue.

I haven't seen a CPU that really is SGX 2 capable yet. Some CPUs return sgx 2 supported: 1 but none of these CPU's can be configured to execute SGX because it cannot be enabled in BIOS (eg. Cloud vendors, MacBooks).

It would be great if someone is able to share information regarding the usage of SGX 2 and the release of SGX2 capable CPU's because I get a few e-mails regarding that topic.

printf("\nCPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)\n");
eax = 0x12;
ecx = 0;
native_cpuid(&eax, &ebx, &ecx, &edx);
printf("sgx 1 supported: %d\n", eax & 0x1);
printf("sgx 2 supported: %d\n", (eax >> 1) & 0x1);
printf("MaxEnclaveSize_Not64: %x\n", edx & 0xFF);
printf("MaxEnclaveSize_64: %x\n", (edx >> 8) & 0xFF);

test-sgx should support software enabled SGX

My NUC came with "software enabled" SGX in BIOS. The test-sgx returned that there is no SGX support until I have enabled it manually in BIOS (switched to "enabled"). But I think it would be cool if test-sgx could enable SGX "from software" and test it this way. Or at least not somehow that enabling is possible and provide a command line switch to enable it.

Lenovo S510 BIOS update

eax: 506e3 ebx: 5100800 ecx: 7ffafbff edx: bfebfbff
stepping 3
model 14
family 6
processor type 0
extended model 5
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 0 ebx: 0 ecx: 0 edx: 0
sgx 1 supported: 0
sgx 2 supported: 0
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Intel SGX is not enabled in my BIOS.
There is BIOS update release for my desktop but I am not sure that is supports (and enables) Intel SGX.
Last BIOS update on 01/09/2016.

SGX is supported on MSI Z370-A PRO Board (after latest bios update)

Similar to MSI H170 Gaming M3 board, SGX can be enabled on MSI Z370-A PRO board (https://www.msi.com/Motherboard/support/Z370-A-PRO) after bios update (out of the box board had no support to enable SGX in the BIOS).

Tested on Intel CoffeLake i7-8700 after enabling SGX in bios.

Output:
eax: 906ea ebx: 9100800 ecx: 7ffafbff edx: bfebfbff
stepping 10
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 40000000 edx: 9c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 80200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Thank you!

Hardware Report: packet.net

packet.net offers Trusted Compute: a cryptographic chain of trust from hardware to the distributed cluster. Yet, not all of the 9 CPU configurations that they offer under this service are Intel-based, and only one is SGX-capable: C1.SMALL.X86 based on a E3-1240 v5 CPU.

As of April 2018, in talking with their customer and technical support teams, they provided a quote for $270/month with a one-year contract and a 30-day cancellation for a dedicated C1.SMALL.X86 bare metal server, a very similar quote to what IBM quoted at the same time for the same specs.

Yet, when querying further about the feasibility of them enabling SGX through the BIOS when provisioning these dedicated servers, I got a more discouraging response:

I completed my testing against all of our potentially capable Intel servers: c1.small, c1.xlarge, m1.xlarge and m2.xlarge.

Unfortunately, none of them have SGX enabled. Enabling SGX is BIOS dependent (as some of you know), and for reasons that are unclear our hardware partners ship that turned off. I looked for this setting on some of our systems, and could not find it. It may be hidden behind other features (like TXT) that we cannot turn on. It may require new BIOS/UEFI firmware loaded on these systems to support that feature. We can't support TXT because we cannot enable a fully trusted boot chain and we cannot support manual steps during our provisioning and deprovisioning processes that TXT require.

Either way, enabling SGX on our Intel platforms would require a large amount of integration testing so I don't think it will be something we can support in the short term.

Hardware report: ThinkPad X230

eax: 306a9 ebx: 100800 ecx: 7fbae3bf edx: bfebfbff
stepping 9
model 10
family 6
processor type 0
extended model 3
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 281 ecx: 0 edx: 0
sgx available: 0

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 7 ebx: 340 ecx: 340 edx: 0
sgx 1 supported: 1
sgx 2 supported: 1
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 1 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 100 ebx: 240 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Hardware report: MacBook Pro (Retina, 15-inch, Mid 2015)

eax: 40661 ebx: 4100800 ecx: 7ffafbff edx: bfebfbff
stepping 1
model 6
family 6
processor type 0
extended model 4
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 27ab ecx: 0 edx: 0
sgx available: 0

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 7 ebx: 340 ecx: 340 edx: 0
sgx 1 supported: 1
sgx 2 supported: 1
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 1 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 100 ebx: 240 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Supermicro X11SSH-F motherboard works

We acquired back in January a Supermicro 5019-MR system that uses the Supermicro X11SSH-F motherboard.

As of BIOS Revision C29 (Dec 29 2015), the system has full support for SGX when used with SGX-enabled E3-1200v5 Skylake Processors. The same board is in used in two other systems so those systems should also have the same level of support for SGX-enabled processors.

Supermicro advertises that the rest of their new E3-1200v5 Skylake systems have SGX support, but we have not verified this outside of the one system that we have.

SGX support on Gigabyte Z370 AORUS Ultra Gaming (rev. 2.0)

The Gigabyte Z370 AORUS Ultra Gaming (rev. 2.0) motherboard also supports SGX using the latest F4 BIOS version.

This has been tested using Intel Core i7-8700K CPU:

eax: 906ea ebx: b100800 ecx: 7ffafbff edx: bfebfbff
stepping 10
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 40000000 edx: 9c000000
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: b0200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Hardware report: Intel Compute Stick STK2m364CC

Intel's Core m3-based Compute Stick https://ark.intel.com/products/91981/Intel-Compute-Stick-STK2m364CC works fine, test-sgx results are below:


root@sgx:~# ./test-sgx
eax: 406e3 ebx: 100800 ecx: 7ffafbbf edx: bfebfbff
stepping 3
model 14
family 6
processor type 0
extended model 4
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c67af ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 80200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

SGX needs to be activated in BIOS, but otherwise it works great.

Calling native cpuid obviously doesn't work in windows with Visual studio compiler

(Who needs it at all, anyway) ?

With visual studio compiler it should look like

...
#if defined(_MSC_VER)
#include <intrin.h>
#endif
...
static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
	unsigned int *ecx, unsigned int *edx)
{
	/* ecx is often an input as well as an output. */
	
#if !defined(_MSC_VER)
	
	asm volatile("cpuid"
		: "=a" (*eax),
		"=b" (*ebx),
		"=c" (*ecx),
		"=d" (*edx)
		: "0" (*eax), "2" (*ecx));

#else 
	int registers[4] = {0,0,0,0};
	
	__cpuidex(registers, *eax, *ecx);
	*eax = registers[0];
	*ebx = registers[1];
	*ecx = registers[2];
	*edx = registers[3];

#endif
}

I know that it works in windows but unfortunately can not check that it still works in other places.

Hardware Report: MacBook Pro (15-inch, 2017)

eax: 906e9 ebx: 100800 ecx: 7ffafbff edx: bfebfbff
stepping 9
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 0 ebx: 0 ecx: 0 edx: 0
sgx 1 supported: 0
sgx 2 supported: 0
MaxEnclaveSize_Not64: 0
MaxEnclaveSize_64: 0

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

SGX is supported on MSI H170 Gaming M3 Board (after latest bios update)

SGX support is added to the MSI H170 Gaming M3 board (https://www.msi.com/Motherboard/H170-GAMING-M3.html) after latest bios update (out of the box board had no support to enable SGX in the BIOS).
Tested with Skylake Core i7 6700 CPU after enabling sgx in the bios.
Output of the test program -
....
Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 70200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Supported = New Processor, New Motherboard & recommendation for test-sgx code change

So I have a new motherboard - I was able to change the BIOS setting to SGX: Enabled
ASRock Z270 Extreme 4
Processor: Intel Core i7 7700

C:\test-sgx.exe
eax: 906e9 ebx: 7100800 ecx: 7ffafbff edx: bfebfbff
stepping 9
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 1

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: 90200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

note to compile test-sgx.c for windows.... I modified the source, line 7

    asm volatile("cpuid"

changed to

     __asm__ volatile("cpuid"

then I compiled with the Intel C++ Compiler.

SGX support on Gigabyte GA-Z270MX-Gaming 5

Gigabyte GA-Z270MX-Gaming 5 (rev 1.0) motherboard supports SGX using the latest F3 BIOS version.

Tested using Intel Core i7-7700K CPU.

eax: 906e9 ebx: 5100800 ecx: 7ffafbbf edx: bfebfbff
stepping 9
model 14
family 6
processor type 0
extended model 9
extended family 0
smx: 0

Extended feature bits (EAX=07H, ECX=0H)
eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
sgx available: 1

CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
eax: 1 ebx: 0 ecx: 0 edx: 241f
sgx 1 supported: 1
sgx 2 supported: 0
MaxEnclaveSize_Not64: 1f
MaxEnclaveSize_64: 24

CPUID Leaf 12H, Sub-Leaf 1 of Intel SGX Capabilities (EAX=12H,ECX=1)
eax: 36 ebx: 0 ecx: 1f edx: 0

CPUID Leaf 12H, Sub-Leaf 2 of Intel SGX Capabilities (EAX=12H,ECX=2)
eax: b0200001 ebx: 0 ecx: 5d80001 edx: 0

CPUID Leaf 12H, Sub-Leaf 3 of Intel SGX Capabilities (EAX=12H,ECX=3)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 4 of Intel SGX Capabilities (EAX=12H,ECX=4)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 5 of Intel SGX Capabilities (EAX=12H,ECX=5)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 6 of Intel SGX Capabilities (EAX=12H,ECX=6)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 7 of Intel SGX Capabilities (EAX=12H,ECX=7)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 8 of Intel SGX Capabilities (EAX=12H,ECX=8)
eax: 0 ebx: 0 ecx: 0 edx: 0

CPUID Leaf 12H, Sub-Leaf 9 of Intel SGX Capabilities (EAX=12H,ECX=9)
eax: 0 ebx: 0 ecx: 0 edx: 0

Dell XPS 13 9360 Works

Tested on i7 7500U, Bios 1.3.2, Model number XPS9360-7336SLV

Had to enable it in the Bios (defaults to disabled)

Hardware Report on Surface and Dell latitude

I got a Surface Pro 4 and a Surface Book 2, both are CPU supported with SGX but unfortunately, that Surface UEFI didn't support with SGX. Therefore I can only use SDK on Surface but have to find another PC to run and test it.

Also, I got a Dell Latitude 7280, it's setting is similar to Desktop's UEFI and it does have SGX options. With i5 7th gen on board and it's supported.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.