Skip to content

Commit cf95bca

Browse files
author
Dorinda Bassey
committed
vhost-device-gpu: Make Adapter new() return Result
Change all GPU adapter new() methods to return io::Result<Self>. This allows callers to decide how to handle initialization failures. Signed-off-by: Dorinda Bassey <[email protected]>
1 parent 5e83c07 commit cf95bca

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

vhost-device-gpu/src/backend/gfxstream.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use std::{
88
cell::RefCell,
99
collections::BTreeMap,
10-
io::IoSliceMut,
10+
io::{self, IoSliceMut},
1111
os::{fd::FromRawFd, raw::c_void},
1212
sync::{Arc, Mutex},
1313
};
@@ -103,7 +103,11 @@ pub struct GfxstreamAdapter {
103103
}
104104

105105
impl GfxstreamAdapter {
106-
pub fn new(queue_ctl: &VringRwLock, gpu_config: &GpuConfig, gpu_backend: GpuBackend) -> Self {
106+
pub fn new(
107+
queue_ctl: &VringRwLock,
108+
gpu_config: &GpuConfig,
109+
gpu_backend: GpuBackend,
110+
) -> io::Result<Self> {
107111
let fence_state = Arc::new(Mutex::new(FenceState::default()));
108112
let fence = Self::create_fence_handler(queue_ctl.clone(), fence_state.clone());
109113

@@ -116,12 +120,12 @@ impl GfxstreamAdapter {
116120
}
117121
});
118122

119-
Self {
123+
Ok(Self {
120124
gpu_backend,
121125
fence_state,
122126
resources: BTreeMap::new(),
123127
scanouts: Default::default(),
124-
}
128+
})
125129
}
126130

127131
fn create_fence_handler(

vhost-device-gpu/src/backend/null.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
//
44
// SPDX-License-Identifier: Apache-2.0 or BSD-3-Clause
55

6+
use std::io;
7+
68
use log::trace;
79
use rutabaga_gfx::RutabagaFence;
810
use vhost::vhost_user::{
@@ -28,11 +30,11 @@ impl NullAdapter {
2830
_queue_ctl: &vhost_user_backend::VringRwLock,
2931
_config: &GpuConfig,
3032
gpu_backend: GpuBackend,
31-
) -> Self {
33+
) -> io::Result<Self> {
3234
trace!("NullAdapter created");
33-
Self {
35+
Ok(Self {
3436
_gpu_backend: gpu_backend,
35-
}
37+
})
3638
}
3739
}
3840

@@ -264,7 +266,7 @@ mod tests {
264266
let vring = VringRwLock::new(mem, 0x100).unwrap();
265267
let config = GpuConfig::new(GpuMode::Null, None, GpuFlags::default()).unwrap();
266268

267-
NullAdapter::new(&vring, &config, gpu_backend)
269+
NullAdapter::new(&vring, &config, gpu_backend).unwrap()
268270
}
269271

270272
#[test]

vhost-device-gpu/src/backend/virgl.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use std::{
88
collections::BTreeMap,
9-
io::IoSliceMut,
9+
io::{self, IoSliceMut},
1010
os::fd::{AsFd, FromRawFd, IntoRawFd, RawFd},
1111
sync::{Arc, Mutex},
1212
};
@@ -142,7 +142,11 @@ pub struct VirglRendererAdapter {
142142
}
143143

144144
impl VirglRendererAdapter {
145-
pub fn new(queue_ctl: &VringRwLock, config: &GpuConfig, gpu_backend: GpuBackend) -> Self {
145+
pub fn new(
146+
queue_ctl: &VringRwLock,
147+
config: &GpuConfig,
148+
gpu_backend: GpuBackend,
149+
) -> io::Result<Self> {
146150
let virglrenderer_flags = VirglRendererFlags::new()
147151
.use_virgl(true)
148152
.use_venus(true)
@@ -161,14 +165,14 @@ impl VirglRendererAdapter {
161165

162166
let renderer = VirglRenderer::init(virglrenderer_flags, fence_handler, None)
163167
.expect("Failed to initialize virglrenderer");
164-
Self {
168+
Ok(Self {
165169
renderer,
166170
gpu_backend,
167171
fence_state,
168172
resources: BTreeMap::new(),
169173
contexts: BTreeMap::new(),
170174
scanouts: Default::default(),
171-
}
175+
})
172176
}
173177
}
174178

@@ -758,7 +762,7 @@ mod virgl_cov_tests {
758762
create_vring(&mem, &[] as &[TestingDescChainArgs], GuestAddress(0x2000), GuestAddress(0x4000), 64);
759763

760764
let backend = dummy_gpu_backend();
761-
let mut gpu = VirglRendererAdapter::new(&vring, &cfg, backend);
765+
let mut gpu = VirglRendererAdapter::new(&vring, &cfg, backend).unwrap();
762766

763767
gpu.event_poll();
764768
let edid_req = VhostUserGpuEdidRequest {

vhost-device-gpu/src/device.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ macro_rules! handle_adapter {
2424
// Pass $vrings to the call
2525
let (control_vring, gpu_backend) = $self.extract_backend_and_vring($vrings)?;
2626

27-
let renderer = $new_adapter(control_vring, gpu_backend);
27+
let renderer = $new_adapter(control_vring, gpu_backend)?;
2828

2929
event_poll_fd = renderer.get_event_poll_fd();
3030
maybe_renderer.insert(renderer)

0 commit comments

Comments
 (0)