code: func (m *ManagerImpl) readCheckpoint() error {
  	registeredDevs := make(map[string][]string)
  	devEntries := make([]checkpoint.PodDevicesEntry, 0)
  	cp := checkpoint.New(devEntries, registeredDevs)
  	err := m.checkpointManager.GetCheckpoint(kubeletDeviceManagerCheckpoint, cp)
  	if err != nil {
  		if err == errors.ErrCheckpointNotFound {
  			klog.Warningf("Failed to retrieve checkpoint for %q: %v", kubeletDeviceManagerCheckpoint, err)
  			return nil
  		}
  		return err
  	}
  	m.mutex.Lock()
  	defer m.mutex.Unlock()
  	podDevices, registeredDevs := cp.GetData()
  	m.podDevices.fromCheckpointData(podDevices)
  	m.allocatedDevices = m.podDevices.devices()
  	for resource := range registeredDevs {
  		// During start up, creates empty healthyDevices list so that the resource capacity
  		// will stay zero till the corresponding device plugin re-registers.
  		m.healthyDevices[resource] = sets.NewString()
  		m.unhealthyDevices[resource] = sets.NewString()
  		m.endpoints[resource] = endpointInfo{e: newStoppedEndpointImpl(resource), opts: nil}
  	}
  	return nil
  }
docs: // Reads device to container allocation information from disk, and populates
  // m.allocatedDevices accordingly.