#define IMR_MASK               (IMR_ALIGN - 1)
 
 int imr_add_range(phys_addr_t base, size_t size,
-                 unsigned int rmask, unsigned int wmask, bool lock);
+                 unsigned int rmask, unsigned int wmask);
 
 int imr_remove_range(phys_addr_t base, size_t size);
 
 
  * @idev:      pointer to imr_device structure.
  * @imr_id:    IMR entry to write.
  * @imr:       IMR structure representing address and access masks.
- * @lock:      indicates if the IMR lock bit should be applied.
  * @return:    0 on success or error code passed from mbi_iosf on failure.
  */
-static int imr_write(struct imr_device *idev, u32 imr_id,
-                    struct imr_regs *imr, bool lock)
+static int imr_write(struct imr_device *idev, u32 imr_id, struct imr_regs *imr)
 {
        unsigned long flags;
        u32 reg = imr_id * IMR_NUM_REGS + idev->reg_base;
        if (ret)
                goto failed;
 
-       /* Lock bit must be set separately to addr_lo address bits. */
-       if (lock) {
-               imr->addr_lo |= IMR_LOCK;
-               ret = iosf_mbi_write(QRK_MBI_UNIT_MM, MBI_REG_WRITE,
-                                    reg - IMR_NUM_REGS, imr->addr_lo);
-               if (ret)
-                       goto failed;
-       }
-
        local_irq_restore(flags);
        return 0;
 failed:
  * @size:      physical size of region in bytes must be aligned to 1KiB.
  * @read_mask: read access mask.
  * @write_mask:        write access mask.
- * @lock:      indicates whether or not to permanently lock this region.
  * @return:    zero on success or negative value indicating error.
  */
 int imr_add_range(phys_addr_t base, size_t size,
-                 unsigned int rmask, unsigned int wmask, bool lock)
+                 unsigned int rmask, unsigned int wmask)
 {
        phys_addr_t end;
        unsigned int i;
        imr.rmask = rmask;
        imr.wmask = wmask;
 
-       ret = imr_write(idev, reg, &imr, lock);
+       ret = imr_write(idev, reg, &imr);
        if (ret < 0) {
                /*
                 * In the highly unlikely event iosf_mbi_write failed
                imr.addr_hi = 0;
                imr.rmask = IMR_READ_ACCESS_ALL;
                imr.wmask = IMR_WRITE_ACCESS_ALL;
-               imr_write(idev, reg, &imr, false);
+               imr_write(idev, reg, &imr);
        }
 failed:
        mutex_unlock(&idev->lock);
        imr.rmask = IMR_READ_ACCESS_ALL;
        imr.wmask = IMR_WRITE_ACCESS_ALL;
 
-       ret = imr_write(idev, reg, &imr, false);
+       ret = imr_write(idev, reg, &imr);
 
 failed:
        mutex_unlock(&idev->lock);
         * We don't round up @size since it is already PAGE_SIZE aligned.
         * See vmlinux.lds.S for details.
         */
-       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU, false);
+       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU);
        if (ret < 0) {
                pr_err("unable to setup IMR for kernel: %zu KiB (%lx - %lx)\n",
                        size / 1024, start, end);
 
        int ret;
 
        /* Test zero zero. */
-       ret = imr_add_range(0, 0, 0, 0, false);
+       ret = imr_add_range(0, 0, 0, 0);
        imr_self_test_result(ret < 0, "zero sized IMR\n");
 
        /* Test exact overlap. */
-       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU, false);
+       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU);
        imr_self_test_result(ret < 0, fmt_over, __va(base), __va(base + size));
 
        /* Test overlap with base inside of existing. */
        base += size - IMR_ALIGN;
-       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU, false);
+       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU);
        imr_self_test_result(ret < 0, fmt_over, __va(base), __va(base + size));
 
        /* Test overlap with end inside of existing. */
        base -= size + IMR_ALIGN * 2;
-       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU, false);
+       ret = imr_add_range(base, size, IMR_CPU, IMR_CPU);
        imr_self_test_result(ret < 0, fmt_over, __va(base), __va(base + size));
 
        /* Test that a 1 KiB IMR @ zero with read/write all will bomb out. */
        ret = imr_add_range(0, IMR_ALIGN, IMR_READ_ACCESS_ALL,
-                           IMR_WRITE_ACCESS_ALL, false);
+                           IMR_WRITE_ACCESS_ALL);
        imr_self_test_result(ret < 0, "1KiB IMR @ 0x00000000 - access-all\n");
 
        /* Test that a 1 KiB IMR @ zero with CPU only will work. */
-       ret = imr_add_range(0, IMR_ALIGN, IMR_CPU, IMR_CPU, false);
+       ret = imr_add_range(0, IMR_ALIGN, IMR_CPU, IMR_CPU);
        imr_self_test_result(ret >= 0, "1KiB IMR @ 0x00000000 - cpu-access\n");
        if (ret >= 0) {
                ret = imr_remove_range(0, IMR_ALIGN);
 
        /* Test 2 KiB works. */
        size = IMR_ALIGN * 2;
-       ret = imr_add_range(0, size, IMR_READ_ACCESS_ALL,
-                           IMR_WRITE_ACCESS_ALL, false);
+       ret = imr_add_range(0, size, IMR_READ_ACCESS_ALL, IMR_WRITE_ACCESS_ALL);
        imr_self_test_result(ret >= 0, "2KiB IMR @ 0x00000000\n");
        if (ret >= 0) {
                ret = imr_remove_range(0, size);