for (i = 0; i < npucomp->pe_num; ++i) {
                struct pnv_ioda_pe *pe = npucomp->pe[i];
 
-               if (!pe->table_group.ops->take_ownership)
+               if (!pe->table_group.ops ||
+                   !pe->table_group.ops->take_ownership)
                        continue;
                pe->table_group.ops->take_ownership(&pe->table_group);
        }
        for (i = 0; i < npucomp->pe_num; ++i) {
                struct pnv_ioda_pe *pe = npucomp->pe[i];
 
-               if (!pe->table_group.ops->release_ownership)
+               if (!pe->table_group.ops ||
+                   !pe->table_group.ops->release_ownership)
                        continue;
                pe->table_group.ops->release_ownership(&pe->table_group);
        }
                return -ENODEV;
 
        hose = pci_bus_to_host(npdev->bus);
+       if (hose->npu == NULL) {
+               dev_info_once(&npdev->dev, "Nvlink1 does not support contexts");
+               return 0;
+       }
+
        nphb = hose->private_data;
 
        dev_dbg(&gpdev->dev, "Map LPAR opalid=%llu lparid=%u\n",
                return -ENODEV;
 
        hose = pci_bus_to_host(npdev->bus);
+       if (hose->npu == NULL) {
+               dev_info_once(&npdev->dev, "Nvlink1 does not support contexts");
+               return 0;
+       }
+
        nphb = hose->private_data;
 
        dev_dbg(&gpdev->dev, "destroy context opalid=%llu\n",