@@ -15,7 +15,6 @@
#include "../encls.h"
#include "../sgx.h"
-#define SGX_DRV_NR_DEVICES 2
#define SGX_EINIT_SPIN_COUNT 20
#define SGX_EINIT_SLEEP_COUNT 50
#define SGX_EINIT_SLEEP_TIME 20
@@ -211,7 +211,7 @@ int __init sgx_drv_init(void)
if (ret)
return ret;
- ret = alloc_chrdev_region(&sgx_devt, 0, SGX_DRV_NR_DEVICES, "sgx");
+ ret = alloc_chrdev_region(&sgx_devt, 0, SGX_MAX_NR_DEVICES, "sgx");
if (ret < 0)
goto err_bus;
@@ -238,12 +238,13 @@ int __init sgx_drv_init(void)
}
ret = sgx_dev_init("sgx/enclave", &sgx_encl_dev, &sgx_encl_cdev,
- &sgx_encl_fops, 0);
+ &sgx_encl_fops, SGX_ENCL_DEV_MINOR);
if (ret)
goto err_chrdev_region;
ret = sgx_dev_init("sgx/provision", &sgx_provision_dev,
- &sgx_provision_cdev, &sgx_provision_fops, 1);
+ &sgx_provision_cdev, &sgx_provision_fops,
+ SGX_PROV_DEV_MINOR);
if (ret)
goto err_encl_dev;
@@ -277,7 +278,7 @@ int __init sgx_drv_init(void)
put_device(&sgx_encl_dev);
err_chrdev_region:
- unregister_chrdev_region(sgx_devt, SGX_DRV_NR_DEVICES);
+ unregister_chrdev_region(sgx_devt, SGX_MAX_NR_DEVICES);
err_bus:
bus_unregister(&sgx_bus_type);
@@ -89,4 +89,8 @@ void sgx_free_page(struct sgx_epc_page *page);
int sgx_einit(struct sgx_sigstruct *sigstruct, struct sgx_einittoken *token,
struct sgx_epc_page *secs, u64 *lepubkeyhash);
+#define SGX_ENCL_DEV_MINOR 0
+#define SGX_PROV_DEV_MINOR 1
+#define SGX_MAX_NR_DEVICES 2
+
#endif /* _X86_SGX_H */
Add defines to track the minor numbers for each SGX device in preparation for moving the helper code and provisioning device to the common subsystem, and in preparation for adding a third device, i.e. a virtual EPC device. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> --- arch/x86/kernel/cpu/sgx/driver/driver.h | 1 - arch/x86/kernel/cpu/sgx/driver/main.c | 9 +++++---- arch/x86/kernel/cpu/sgx/sgx.h | 4 ++++ 3 files changed, 9 insertions(+), 5 deletions(-)