sev-dev.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * AMD Platform Security Processor (PSP) interface driver
  4. *
  5. * Copyright (C) 2017-2019 Advanced Micro Devices, Inc.
  6. *
  7. * Author: Brijesh Singh <brijesh.singh@amd.com>
  8. */
  9. #ifndef __SEV_DEV_H__
  10. #define __SEV_DEV_H__
  11. #include <linux/device.h>
  12. #include <linux/spinlock.h>
  13. #include <linux/mutex.h>
  14. #include <linux/list.h>
  15. #include <linux/wait.h>
  16. #include <linux/dmapool.h>
  17. #include <linux/hw_random.h>
  18. #include <linux/bitops.h>
  19. #include <linux/interrupt.h>
  20. #include <linux/irqreturn.h>
  21. #include <linux/dmaengine.h>
  22. #include <linux/psp-sev.h>
  23. #include <linux/miscdevice.h>
  24. #include <linux/capability.h>
  25. #define SEV_CMDRESP_CMD GENMASK(26, 16)
  26. #define SEV_CMD_COMPLETE BIT(1)
  27. #define SEV_CMDRESP_IOC BIT(0)
  28. struct sev_misc_dev {
  29. struct kref refcount;
  30. struct miscdevice misc;
  31. };
  32. struct sev_device {
  33. struct device *dev;
  34. struct psp_device *psp;
  35. void __iomem *io_regs;
  36. struct sev_vdata *vdata;
  37. int state;
  38. unsigned int int_rcvd;
  39. wait_queue_head_t int_queue;
  40. struct sev_misc_dev *misc;
  41. u8 api_major;
  42. u8 api_minor;
  43. u8 build;
  44. void *cmd_buf;
  45. void *cmd_buf_backup;
  46. bool cmd_buf_active;
  47. bool cmd_buf_backup_active;
  48. bool snp_initialized;
  49. };
  50. int sev_dev_init(struct psp_device *psp);
  51. void sev_dev_destroy(struct psp_device *psp);
  52. void sev_pci_init(void);
  53. void sev_pci_exit(void);
  54. #endif /* __SEV_DEV_H */