imx8 Quad Max determine if SOM is closed by reading a fuse?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx8 Quad Max determine if SOM is closed by reading a fuse?

Jump to solution
1,575 Views
flobro
Contributor IV

Is there a way to tell by a fuse or other way to determine id the "ahab_close" has been called?

 

I would like to do this in Linux if there is a fuse I can read.

 

Alternative, what user fuse is readable that I could set to use as an indicator if the closed status is not available?

Tags (5)
0 Kudos
Reply
1 Solution
1,405 Views
flobro
Contributor IV

Without a Linux user space utility that could call SCFW, does not really help. I have  a workaround for our case that allows our manufacturing process the ability to mange the fuses.

View solution in original post

Tags (3)
0 Kudos
Reply
6 Replies
1,463 Views
flobro
Contributor IV

Response is great is you are using a terminal and a human is reading and acting upon it, so this is not a usable solution.

I could not use the "ahab_status" in a uboot "test" command to send the kernel the status in a command line argument (result code was not always correct "$?")

I do not understand why NXP could not use a readable fuse to indicate status just like imx8m Plus... There a so many unused fuses.

 

0 Kudos
Reply
1,423 Views
JosephAtNXP
NXP TechSupport
NXP TechSupport

Hi,

Thank you for your patience,

The fuse is not readable from the user since the security differences from i.MX8MP (SECO and SCFW), there is a SCFW call that handles this and can help you (at U-boot, Linux, etc since it's a SCFW call). The life cycle is indeed a fuse but it's secured and you can read it though the API.

U-boot does it in the mentioned command. It's below, I hope it helps.

sc_err_t sc_seco_chip_info (sc_ipc_t ipc, uint16_t ∗lc, uint16_t ∗monotonic, uint32_t ∗uid_l, uint32_t ∗uid_h)

Regards,

0 Kudos
Reply
1,406 Views
flobro
Contributor IV

Without a Linux user space utility that could call SCFW, does not really help. I have  a workaround for our case that allows our manufacturing process the ability to mange the fuses.

Tags (3)
0 Kudos
Reply
1,501 Views
flobro
Contributor IV

Here is the situation: We cannot allow a SOM that is "not closed" to run code that is signed, intended for a closed device. That is a major security hole.

On the imx8M Plus, we could read a fuse to determine this and prevent the processor from booting, and report it as a security issue.

On the Quad Max, it does not appear that there is a way to determine this by reading a fuse (I hope I am wrong), but Uboot  reporting this does not help... If there was a "user fuse" (NXP refers to them as "Customer OTP fuses") that I can read in user space that can be burned by uboot the same time I close the SOM, that would work.

0 Kudos
Reply
1,565 Views
flobro
Contributor IV

If there is a "Customer fuse" that can be read by the imx-scu-ocotp0 driver, that would work wonderfully...

0 Kudos
Reply
1,541 Views
JosephAtNXP
NXP TechSupport
NXP TechSupport

Hi,

Thank you for your interest in NXP Semiconductor products,

You can confirm it in U-boot quickly with the command ahab_status.

Regards

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2062186%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Eimx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2062186%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EIs%20there%20a%20way%20to%20tell%20by%20a%20fuse%20or%20other%20way%20to%20determine%20id%20the%20%22ahab_close%22%20has%20been%20called%3F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EI%20would%20like%20to%20do%20this%20in%20Linux%20if%20there%20is%20a%20fuse%20I%20can%20read.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EAlternative%2C%20what%20user%20fuse%20is%20readable%20that%20I%20could%20set%20to%20use%20as%20an%20indicator%20if%20the%20closed%20status%20is%20not%20available%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2062186%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208%20Family%20%7C%20i.MX%208QuadMax%20(8QM)%20%7C%208QuadPlus%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2067500%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2067500%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EWithout%20a%20Linux%20user%20space%20utility%20that%20could%20call%20SCFW%2C%20does%20not%20really%20help.%20I%20have%26nbsp%3B%20a%20workaround%20for%20our%20case%20that%20allows%20our%20manufacturing%20process%20the%20ability%20to%20mange%20the%20fuses.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2067471%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2067471%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EThank%20you%20for%20your%20patience%2C%3C%2FP%3E%0A%3CP%3EThe%20fuse%20is%20not%20readable%20from%20the%20user%20since%20the%20security%20differences%20from%20i.MX8MP%20(SECO%20and%20SCFW)%2C%20there%20is%20a%20SCFW%20call%20that%20handles%20this%20and%20can%20help%20you%20(at%20U-boot%2C%20Linux%2C%20etc%20since%20it's%20a%20SCFW%20call).%20The%20life%20cycle%20is%20indeed%20a%20fuse%20but%20it's%20secured%20and%20you%20can%20read%20it%20though%20the%20API.%3C%2FP%3E%0A%3CP%3EU-boot%20does%20it%20in%20the%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Fuboot-imx%2Fblob%2Flf_v2022.04%2Fdrivers%2Fmisc%2Fimx8%2Fscu_api.c%23L980%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ementioned%20command%3C%2FA%3E.%20It's%20below%2C%20I%20hope%20it%20helps.%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3Esc_err_t%20sc_seco_chip_info%20(sc_ipc_t%20ipc%2C%20uint16_t%20%E2%88%97lc%2C%20uint16_t%20%E2%88%97monotonic%2C%20uint32_t%20%E2%88%97uid_l%2C%20uint32_t%20%E2%88%97uid_h)%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3ERegards%2C%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2066251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2066251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EResponse%20is%20great%20is%20you%20are%20using%20a%20terminal%20and%20a%20human%20is%20reading%20and%20acting%20upon%20it%2C%20so%20this%20is%20not%20a%20usable%20solution.%3C%2FP%3E%3CP%3EI%20could%20not%20use%20the%20%22ahab_status%22%20in%20a%20uboot%20%22test%22%20command%20to%20send%20the%20kernel%20the%20status%20in%20a%20command%20line%20argument%20(result%20code%20was%20not%20always%20correct%20%22%24%3F%22)%3C%2FP%3E%3CP%3EI%20do%20not%20understand%20why%20NXP%20could%20not%20use%20a%20readable%20fuse%20to%20indicate%20status%20just%20like%20imx8m%20Plus...%20There%20a%20so%20many%20unused%20fuses.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2063853%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2063853%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHere%20is%20the%20situation%3A%20We%20cannot%20allow%20a%20SOM%20that%20is%20%22not%20closed%22%20to%20run%20code%20that%20is%20signed%2C%20intended%20for%20a%20closed%20device.%20That%20is%20a%20major%20security%20hole.%3C%2FP%3E%3CP%3EOn%20the%20imx8M%20Plus%2C%20we%20could%20read%20a%20fuse%20to%20determine%20this%20and%20prevent%20the%20processor%20from%20booting%2C%20and%20report%20it%20as%20a%20security%20issue.%3C%2FP%3E%3CP%3EOn%20the%20Quad%20Max%2C%20it%20does%20not%20appear%20that%20there%20is%20a%20way%20to%20determine%20this%20by%20reading%20a%20fuse%20(I%20hope%20I%20am%20wrong)%2C%20but%20Uboot%26nbsp%3B%20reporting%20this%20does%20not%20help...%20If%20there%20was%20a%20%22user%20fuse%22%20(NXP%20refers%20to%20them%20as%20%22Customer%20OTP%20fuses%22)%20that%20I%20can%20read%20in%20user%20space%20that%20can%20be%20burned%20by%20uboot%20the%20same%20time%20I%20close%20the%20SOM%2C%20that%20would%20work.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2062314%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2062314%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EThank%20you%20for%20your%20interest%20in%20NXP%20Semiconductor%20products%2C%3C%2FP%3E%0A%3CP%3EYou%20can%20confirm%20it%20in%20U-boot%20quickly%20with%20the%20command%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Fuboot-imx%2Fblob%2F7376547b9e424b2d0f42dfe96394168c781ca297%2Fdoc%2Fimx%2Fahab%2Fguides%2Fmx8_mx8x_secure_boot.txt%23L266%22%20target%3D%22_self%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Eahab_status%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3ERegards%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2062214%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20imx8%20Quad%20Max%20determine%20if%20SOM%20is%20closed%20by%20reading%20a%20fuse%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2062214%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EIf%20there%20is%20a%20%22Customer%20fuse%22%20that%20can%20be%20read%20by%20the%26nbsp%3Bimx-scu-ocotp0%20driver%2C%20that%20would%20work%20wonderfully...%3C%2FP%3E%3C%2FLINGO-BODY%3E