Commit 3454a034 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Ben Skeggs

drm/nouveau/secboot: disable falcon interrupts when running blob

Make sure we are not disturbed by spurious interrupts, as we poll the
halt bit anyway.
Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 555cafb4
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <core/gpuobj.h> #include <core/gpuobj.h>
#include <subdev/fb.h> #include <subdev/fb.h>
#include <engine/falcon.h> #include <engine/falcon.h>
#include <subdev/mc.h>
/** /**
* gm200_secboot_run_blob() - run the given high-secure blob * gm200_secboot_run_blob() - run the given high-secure blob
...@@ -63,6 +64,9 @@ gm200_secboot_run_blob(struct nvkm_secboot *sb, struct nvkm_gpuobj *blob) ...@@ -63,6 +64,9 @@ gm200_secboot_run_blob(struct nvkm_secboot *sb, struct nvkm_gpuobj *blob)
if (ret) if (ret)
goto end; goto end;
/* Disable interrupts as we will poll for the HALT bit */
nvkm_mc_intr_mask(sb->subdev.device, falcon->owner->index, false);
/* Start the HS bootloader */ /* Start the HS bootloader */
nvkm_falcon_set_start_addr(falcon, sb->acr->start_address); nvkm_falcon_set_start_addr(falcon, sb->acr->start_address);
nvkm_falcon_start(falcon); nvkm_falcon_start(falcon);
...@@ -79,6 +83,9 @@ gm200_secboot_run_blob(struct nvkm_secboot *sb, struct nvkm_gpuobj *blob) ...@@ -79,6 +83,9 @@ gm200_secboot_run_blob(struct nvkm_secboot *sb, struct nvkm_gpuobj *blob)
} }
end: end:
/* Reenable interrupts */
nvkm_mc_intr_mask(sb->subdev.device, falcon->owner->index, true);
/* We don't need the ACR firmware anymore */ /* We don't need the ACR firmware anymore */
nvkm_gpuobj_unmap(&vma); nvkm_gpuobj_unmap(&vma);
nvkm_falcon_put(falcon, subdev); nvkm_falcon_put(falcon, subdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment