@@ -158,7 +158,7 @@ int psp_dev_init(struct sp_device *sp)
ret = psp_check_support(psp);
if (ret)
- goto e_disable;
+ return 0;
/* Disable and clear interrupts until ready */
iowrite32(0, psp->io_regs + psp->vdata->inten_reg);
@@ -132,6 +132,8 @@ int sp_request_psp_irq(struct sp_device *sp, irq_handler_t handler,
void sp_free_ccp_irq(struct sp_device *sp, void *data)
{
+ if (!sp->irq_registered)
+ return;
if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->psp_vdata) {
/* Using common routine to manage all interrupts */
if (!sp->psp_irq_handler) {
@@ -151,6 +153,8 @@ void sp_free_ccp_irq(struct sp_device *sp, void *data)
void sp_free_psp_irq(struct sp_device *sp, void *data)
{
+ if (!sp->irq_registered)
+ return;
if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->ccp_vdata) {
/* Using common routine to manage all interrupts */
if (!sp->ccp_irq_handler) {
Previously the PSP probe routine would fail if both SEV and TEE were missing. This is possibly the case for some client parts. As capabilities can now be accessed from userspace, it may still be useful to have the PSP driver finish loading so that those capabilities can be read. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- drivers/crypto/ccp/psp-dev.c | 2 +- drivers/crypto/ccp/sp-dev.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-)