Skip to content

Commit d5e27a8

Browse files
committed
refactor: drop Stdout argument from setup_serial_device()
This is also a singleton, so passing it around makes not very much sense. Also move the call to set_stdout_nonblocking() that was done (almost) everywhere before calling setup_serial_device() into the function. This call was _not_ done on the ARM restore path, but that seems more like a bug rather than intentional, so do it now. This helps because later this function will query the logger configuration to determine whether serial output should go to a file instead, in which case the call to set_stdout_nonblocking() is not needed. Signed-off-by: Patrick Roy <[email protected]>
1 parent 28f7ec2 commit d5e27a8

File tree

3 files changed

+9
-15
lines changed

3 files changed

+9
-15
lines changed

src/vmm/src/builder.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,8 @@ fn create_vmm_and_vcpus(
159159

160160
#[cfg(target_arch = "x86_64")]
161161
let pio_device_manager = {
162-
// Make stdout non blocking.
163-
set_stdout_nonblocking();
164-
165162
// Serial device setup.
166-
let serial_device = setup_serial_device(event_manager, io::stdout())?;
163+
let serial_device = setup_serial_device(event_manager)?;
167164

168165
// x86_64 uses the i8042 reset event as the Vmm exit event.
169166
let reset_evt = vcpus_exit_evt.try_clone().map_err(VmmError::EventFd)?;
@@ -553,8 +550,9 @@ pub fn build_microvm_from_snapshot(
553550
/// Sets up the serial device.
554551
pub fn setup_serial_device(
555552
event_manager: &mut EventManager,
556-
out: std::io::Stdout,
557553
) -> Result<Arc<Mutex<BusDevice>>, VmmError> {
554+
set_stdout_nonblocking();
555+
558556
let interrupt_evt = EventFdTrigger::new(EventFd::new(EFD_NONBLOCK).map_err(VmmError::EventFd)?);
559557
let kick_stdin_read_evt =
560558
EventFdTrigger::new(EventFd::new(EFD_NONBLOCK).map_err(VmmError::EventFd)?);
@@ -564,7 +562,7 @@ pub fn setup_serial_device(
564562
SerialEventsWrapper {
565563
buffer_ready_event_fd: Some(kick_stdin_read_evt),
566564
},
567-
SerialOut::Stdout(out),
565+
SerialOut::Stdout(std::io::stdout()),
568566
),
569567
input: Some(std::io::stdin()),
570568
})));
@@ -625,9 +623,7 @@ fn attach_legacy_devices_aarch64(
625623
.contains("console=");
626624

627625
if cmdline_contains_console {
628-
// Make stdout non-blocking.
629-
set_stdout_nonblocking();
630-
let serial = setup_serial_device(event_manager, std::io::stdout())?;
626+
let serial = setup_serial_device(event_manager)?;
631627
vmm.mmio_device_manager
632628
.register_mmio_serial(vmm.vm.fd(), &mut vmm.resource_allocator, serial, None)
633629
.map_err(VmmError::RegisterMMIODevice)?;

src/vmm/src/device_manager/legacy.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ impl PortIODeviceManager {
111111
SerialEventsWrapper {
112112
buffer_ready_event_fd: None,
113113
},
114-
SerialOut::Sink
114+
SerialOut::Sink,
115115
),
116116
input: None,
117117
})));
@@ -121,7 +121,7 @@ impl PortIODeviceManager {
121121
SerialEventsWrapper {
122122
buffer_ready_event_fd: None,
123123
},
124-
SerialOut::Sink
124+
SerialOut::Sink,
125125
),
126126
input: None,
127127
})));

src/vmm/src/device_manager/persist.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,10 +403,8 @@ impl<'a> Persist<'a> for MMIODeviceManager {
403403
{
404404
for state in &state.legacy_devices {
405405
if state.type_ == DeviceType::Serial {
406-
let serial = crate::builder::setup_serial_device(
407-
constructor_args.event_manager,
408-
std::io::stdout(),
409-
)?;
406+
let serial =
407+
crate::builder::setup_serial_device(constructor_args.event_manager)?;
410408

411409
constructor_args
412410
.resource_allocator

0 commit comments

Comments
 (0)