Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -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)
	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)
	}
	}


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);