(
&self,
gpu_requirements: Option<&GpuResourceRequirements>,
driver_config: &PodmanSandboxDriverConfig,
select_default_devices: fn(
&CdiGpuDefaultSelector,
| 405 | } |
| 406 | |
| 407 | fn resolve_gpu_cdi_devices( |
| 408 | &self, |
| 409 | gpu_requirements: Option<&GpuResourceRequirements>, |
| 410 | driver_config: &PodmanSandboxDriverConfig, |
| 411 | select_default_devices: fn( |
| 412 | &CdiGpuDefaultSelector, |
| 413 | u32, |
| 414 | ) -> Result<Vec<String>, CdiGpuSelectionError>, |
| 415 | ) -> Result<Option<Vec<String>>, ComputeDriverError> { |
| 416 | if let Some(cdi_devices) = driver_config.cdi_devices.as_deref() { |
| 417 | validate_specific_gpu_device_request( |
| 418 | gpu_requirements, |
| 419 | cdi_devices, |
| 420 | "driver_config.cdi_devices", |
| 421 | ) |
| 422 | .map_err(ComputeDriverError::InvalidArgument)?; |
| 423 | return Ok(Some(cdi_devices.to_vec())); |
| 424 | } |
| 425 | |
| 426 | let Some(count) = effective_driver_gpu_count(gpu_requirements) |
| 427 | .map_err(ComputeDriverError::InvalidArgument)? |
| 428 | else { |
| 429 | return Ok(None); |
| 430 | }; |
| 431 | |
| 432 | self.refresh_gpu_inventory(); |
| 433 | select_default_devices(&self.gpu_selector, count) |
| 434 | .map(Some) |
| 435 | .map_err(podman_gpu_selection_error) |
| 436 | } |
| 437 | |
| 438 | async fn validate_user_volume_mounts_available( |
| 439 | &self, |
no test coverage detected