* @rf: RDMA PCI function
  * @iwmr: mr pointer for this memory registration
  * @use_pbles: flag if to use pble's
+ * @lvl_1_only: request only level 1 pble if true
  */
 static int irdma_setup_pbles(struct irdma_pci_f *rf, struct irdma_mr *iwmr,
-                            bool use_pbles)
+                            bool use_pbles, bool lvl_1_only)
 {
        struct irdma_pbl *iwpbl = &iwmr->iwpbl;
        struct irdma_pble_alloc *palloc = &iwpbl->pble_alloc;
 
        if (use_pbles) {
                status = irdma_get_pble(rf->pble_rsrc, palloc, iwmr->page_cnt,
-                                       false);
+                                       lvl_1_only);
                if (status)
                        return status;
 
        bool ret = true;
 
        pg_size = iwmr->page_size;
-       err = irdma_setup_pbles(iwdev->rf, iwmr, use_pbles);
+       err = irdma_setup_pbles(iwdev->rf, iwmr, use_pbles, true);
        if (err)
                return err;
 
-       if (use_pbles && palloc->level != PBLE_LEVEL_1) {
-               irdma_free_pble(iwdev->rf->pble_rsrc, palloc);
-               iwpbl->pbl_allocated = false;
-               return -ENOMEM;
-       }
-
        if (use_pbles)
                arr = palloc->level1.addr;
 
        case IRDMA_MEMREG_TYPE_MEM:
                use_pbles = (iwmr->page_cnt != 1);
 
-               err = irdma_setup_pbles(iwdev->rf, iwmr, use_pbles);
+               err = irdma_setup_pbles(iwdev->rf, iwmr, use_pbles, false);
                if (err)
                        goto error;