mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 10:10:41 +00:00
arch: Don't set up serial device when vhost-user console is set
crosvm sets up an emulated serial device for ttyS0 as a default device unless virtio-console is specified. The setup should be skipped when a vhost-user console is specified as well. BUG=b:196186396 BUG=b:227407433 TEST=no serial output when one vhost-user console is specified. Change-Id: Ib17e218fd01a13c109fc1246fd3a6d99031d3181 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3557729 Reviewed-by: Morg <morg@chromium.org> Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
This commit is contained in:
parent
983e44eeff
commit
ba0e3dbcb8
3 changed files with 14 additions and 7 deletions
|
@ -26,11 +26,12 @@ use crate::DeviceRegistrationError;
|
|||
/// configured explicitly.
|
||||
pub fn set_default_serial_parameters(
|
||||
serial_parameters: &mut BTreeMap<(SerialHardware, u8), SerialParameters>,
|
||||
is_vhost_user_console_enabled: bool,
|
||||
) {
|
||||
// If no console device exists and the first serial port has not been specified,
|
||||
// set the first serial port as a stdout+stdin console.
|
||||
let default_console = (SerialHardware::Serial, 1);
|
||||
if !serial_parameters.iter().any(|(_, p)| p.console) {
|
||||
if !serial_parameters.iter().any(|(_, p)| p.console) && !is_vhost_user_console_enabled {
|
||||
serial_parameters
|
||||
.entry(default_console)
|
||||
.or_insert(SerialParameters {
|
||||
|
@ -148,6 +149,7 @@ pub type GetSerialCmdlineResult<T> = std::result::Result<T, GetSerialCmdlineErro
|
|||
/// Add serial options to the provided `cmdline` based on `serial_parameters`.
|
||||
/// `serial_io_type` should be "io" if the platform uses x86-style I/O ports for serial devices
|
||||
/// or "mmio" if the serial ports are memory mapped.
|
||||
// TODO(b/227407433): Support cases where vhost-user console is specified.
|
||||
pub fn get_serial_cmdline(
|
||||
cmdline: &mut kernel_cmdline::Cmdline,
|
||||
serial_parameters: &BTreeMap<(SerialHardware, u8), SerialParameters>,
|
||||
|
@ -207,7 +209,7 @@ mod tests {
|
|||
let mut cmdline = Cmdline::new(4096);
|
||||
let mut serial_parameters = BTreeMap::new();
|
||||
|
||||
set_default_serial_parameters(&mut serial_parameters);
|
||||
set_default_serial_parameters(&mut serial_parameters, false);
|
||||
get_serial_cmdline(&mut cmdline, &serial_parameters, "io")
|
||||
.expect("get_serial_cmdline failed");
|
||||
|
||||
|
@ -236,7 +238,7 @@ mod tests {
|
|||
},
|
||||
);
|
||||
|
||||
set_default_serial_parameters(&mut serial_parameters);
|
||||
set_default_serial_parameters(&mut serial_parameters, false);
|
||||
get_serial_cmdline(&mut cmdline, &serial_parameters, "io")
|
||||
.expect("get_serial_cmdline failed");
|
||||
|
||||
|
@ -281,7 +283,7 @@ mod tests {
|
|||
},
|
||||
);
|
||||
|
||||
set_default_serial_parameters(&mut serial_parameters);
|
||||
set_default_serial_parameters(&mut serial_parameters, false);
|
||||
get_serial_cmdline(&mut cmdline, &serial_parameters, "io")
|
||||
.expect("get_serial_cmdline failed");
|
||||
|
||||
|
@ -311,7 +313,7 @@ mod tests {
|
|||
},
|
||||
);
|
||||
|
||||
set_default_serial_parameters(&mut serial_parameters);
|
||||
set_default_serial_parameters(&mut serial_parameters, false);
|
||||
get_serial_cmdline(&mut cmdline, &serial_parameters, "io")
|
||||
.expect_err("get_serial_cmdline succeeded");
|
||||
}
|
||||
|
|
|
@ -2462,7 +2462,12 @@ fn validate_arguments(cfg: &mut Config) -> std::result::Result<(), argument::Err
|
|||
"'balloon-control' requires enabled balloon".to_owned(),
|
||||
));
|
||||
}
|
||||
set_default_serial_parameters(&mut cfg.serial_parameters);
|
||||
|
||||
set_default_serial_parameters(
|
||||
&mut cfg.serial_parameters,
|
||||
!cfg.vhost_user_console.is_empty(),
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ where
|
|||
|
||||
let mut serial_params = BTreeMap::new();
|
||||
|
||||
arch::set_default_serial_parameters(&mut serial_params);
|
||||
arch::set_default_serial_parameters(&mut serial_params, false);
|
||||
|
||||
X8664arch::setup_serial_devices(
|
||||
ProtectionType::Unprotected,
|
||||
|
|
Loading…
Reference in a new issue