UFS的写保护有两种,上电写保护(power on write protection)和永久写保护( permanent write protection).这两种都是从LU层面直接配置的data protection mechanism.
在Unit descriptor中有一个可以配置的bLUWriteProtect。
这里01h, 02h都比较好理解,00h括号里的secure write是什么东西下次再写。
注意,setting bLUWriteProtect = 01h /02h之后,并不是立马就生效了。还需要set some flag.
上图是关于上电写保护的。在set fPowerOnWPEn之前,LU还是可以写的。而在重新上电之后,fPowerOnWPEn会被自动clear(注意,bLUWriteProtect不需要重新配置).
下面这张图是关于永久写保护的,只有在set fPermanentWPEn之后,才会进入永久写保护状态。
另外有一点需要注意的是,在set fPermanentWPEn/fPowerOnWPEn时,最好等到所有的
cmd queue都已被清空之后。并且在收到query response之前,不要往queue里放入新的write command.这个目的很明显,在写保护设置的同时执行写命令,那么很有可能会出现一些host意料之外的情况。