Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linux-sgx-driver compilation fails when the kernel version is 6.4. #152

Open
zhou479 opened this issue Jul 24, 2023 · 2 comments
Open

linux-sgx-driver compilation fails when the kernel version is 6.4. #152

zhou479 opened this issue Jul 24, 2023 · 2 comments

Comments

@zhou479
Copy link

zhou479 commented Jul 24, 2023

As the title suggests, in the sgx_main.c file, there's a setting for the vm_flags variable. The kernel has already made modifications to the attributes of this variable by adding 'const' and provided an interface for configuration.
the kernel commit:torvalds/linux@bc292ab
image

@lzha101
Copy link
Contributor

lzha101 commented Jul 25, 2023

Linux kernel v6.4 includes the in-kernel SGX driver. Suggest to use the in-kernel driver instead of this OOT driver.

@joshwyant
Copy link

joshwyant commented Apr 27, 2024

It looks like the latest driver is also failing to install for me.

I'm working through the Driver Installation QuickStart instructions in the latest Intel SGX SW Installation Guide for Linux. I'm following the recommended instructions for the Out-of-Tree Driver option, as I need Legacy Launch Control support for my machine.

I'm unable to install the driver, and I've tried on Ubuntu 22.04.4 and 24.04 Desktop.

According to the driver_readme.txt I found in the release tree, the OOT version is sgx_linux_x64_driver_2.11.b6f5b4a.bin, not to be confused with the DCAP driver with the same name and different version.

Here's what I get when I try to install:

$ sudo ./sgx_linux_x64_driver_2.11.b6f5b4a.bin 
Unpacking Intel SGX Driver ... done.
Verifying the integrity of the install package ... done.
Installing Intel SGX Driver ...
/tmp/sgx-driver-ciUmNZ /home/josh
install -d /opt/intel/sgxdriver/package
install -d /opt/intel/sgxdriver/scripts
install package/* /opt/intel/sgxdriver/package
install scripts/* /opt/intel/sgxdriver/scripts
/home/josh
Warning: There is no need to install additional SGX driver with in-kernel SGX support.
/opt/intel/sgxdriver/package /home/josh
make -C /lib/modules/6.5.0-28-generic/build M=/opt/intel/sgxdriver/package modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-28-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
  You are using:           gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
  CC [M]  /opt/intel/sgxdriver/package/sgx_main.o
/opt/intel/sgxdriver/package/sgx_main.c: In function ‘sgx_mmap’:
/opt/intel/sgxdriver/package/sgx_main.c:112:23: error: assignment of read-only member ‘vm_flags’
  112 |         vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO |
      |                       ^~
make[3]: *** [scripts/Makefile.build:251: /opt/intel/sgxdriver/package/sgx_main.o] Error 1
make[2]: *** [/usr/src/linux-headers-6.5.0-28-generic/Makefile:2039: /opt/intel/sgxdriver/package] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.5.0-28-generic'
make: *** [Makefile:16: default] Error 2

specifically,

/opt/intel/sgxdriver/package/sgx_main.c: In function ‘sgx_mmap’:
/opt/intel/sgxdriver/package/sgx_main.c:112:23: error: assignment of read-only member ‘vm_flags’
  112 |         vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO |
      |                       ^~

I get the same error on 24.04. I also made sure the prerequisites were installed.

It looks like @sssshello's PR #151 was a good fix, but closed with no explanation; but it was applied as a patch to a fork.

Also, the warning, "There is no need to install additional SGX driver with in-kernel SGX support." is misleading if you need to use the legacy /dev/isgx, as it's only available in the OOT version of the sgx driver.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants