diff --git a/Cargo.lock b/Cargo.lock index 0bdf1d0..ef19bc4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1456,9 +1456,11 @@ dependencies = [ "prost", "redb", "scopeguard", + "serde", "signal-hook", "tokio", "tokio-stream", + "toml", "tonic", "uuid", ] @@ -1479,6 +1481,7 @@ dependencies = [ "nix 0.28.0", "oci-spec", "path-absolutize", + "platform-info", "rtnetlink", "serde", "serde_json", @@ -1558,6 +1561,7 @@ dependencies = [ "serde_json", "tokio", "uuid", + "walkdir", ] [[package]] @@ -1602,6 +1606,7 @@ dependencies = [ "log", "memchr", "nix 0.28.0", + "regex", "slice-copy", "thiserror", "tokio", @@ -2067,6 +2072,16 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "platform-info" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5ff316b9c4642feda973c18f0decd6c8b0919d4722566f6e4337cce0dd88217" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "portable-atomic" version = "1.6.0" @@ -2096,7 +2111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -2570,6 +2585,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2984,11 +3008,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.12", +] + [[package]] name = "toml_datetime" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -2998,7 +3037,20 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.6", ] [[package]] @@ -3509,6 +3561,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index 4d5e89c..b8e0b7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,6 +57,7 @@ oci-spec = "0.6.4" once_cell = "1.19.0" path-absolutize = "3.1.1" path-clean = "1.0.1" +platform-info = "2.0.3" prost = "0.12.4" prost-build = "0.12.4" prost-reflect-build = "0.13.0" @@ -64,6 +65,7 @@ prost-types = "0.12.4" rand = "0.8.5" ratatui = "0.26.2" redb = "2.1.0" +regex = "1.10.4" rtnetlink = "0.14.1" scopeguard = "1.2.0" serde_json = "1.0.116" @@ -76,6 +78,7 @@ sysinfo = "0.30.11" termtree = "0.4.1" thiserror = "1.0" tokio-tun = "0.11.4" +toml = "0.8.12" tonic-build = "0.11.0" tower = "0.4.13" udp-stream = "0.0.11" diff --git a/crates/ctl/src/cli/launch.rs b/crates/ctl/src/cli/launch.rs index aa52141..64ab4fe 100644 --- a/crates/ctl/src/cli/launch.rs +++ b/crates/ctl/src/cli/launch.rs @@ -6,8 +6,8 @@ use krata::{ events::EventStream, v1::{ common::{ - guest_image_spec::Image, GuestImageSpec, GuestOciImageSpec, GuestSpec, GuestStatus, - GuestTaskSpec, GuestTaskSpecEnvVar, OciImageFormat, + guest_image_spec::Image, GuestImageSpec, GuestOciImageSpec, GuestSpec, GuestSpecDevice, + GuestStatus, GuestTaskSpec, GuestTaskSpecEnvVar, OciImageFormat, }, control::{ control_service_client::ControlServiceClient, watch_events_reply::Event, @@ -50,6 +50,8 @@ pub struct LaunchCommand { help = "Memory available to the guest, in megabytes" )] mem: u64, + #[arg[short = 'D', long = "device", help = "Devices to request for the guest"]] + device: Vec, #[arg[short, long, help = "Environment variables set in the guest"]] env: Option>, #[arg( @@ -135,6 +137,11 @@ impl LaunchCommand { working_directory: self.working_directory.unwrap_or_default(), }), annotations: vec![], + devices: self + .device + .iter() + .map(|name| GuestSpecDevice { name: name.clone() }) + .collect(), }), }; let response = client diff --git a/crates/ctl/src/cli/list_devices.rs b/crates/ctl/src/cli/list_devices.rs new file mode 100644 index 0000000..b00e5e0 --- /dev/null +++ b/crates/ctl/src/cli/list_devices.rs @@ -0,0 +1,128 @@ +use anyhow::Result; +use clap::{Parser, ValueEnum}; +use comfy_table::{presets::UTF8_FULL_CONDENSED, Cell, Color, Table}; +use krata::{ + events::EventStream, + v1::control::{control_service_client::ControlServiceClient, DeviceInfo, ListDevicesRequest}, +}; + +use serde_json::Value; +use tonic::transport::Channel; + +use crate::format::{kv2line, proto2dynamic, proto2kv}; + +#[derive(ValueEnum, Clone, Debug, PartialEq, Eq)] +enum ListDevicesFormat { + Table, + Json, + JsonPretty, + Jsonl, + Yaml, + KeyValue, + Simple, +} + +#[derive(Parser)] +#[command(about = "List the devices on the hypervisor")] +pub struct ListDevicesCommand { + #[arg(short, long, default_value = "table", help = "Output format")] + format: ListDevicesFormat, +} + +impl ListDevicesCommand { + pub async fn run( + self, + mut client: ControlServiceClient, + _events: EventStream, + ) -> Result<()> { + let reply = client + .list_devices(ListDevicesRequest {}) + .await? + .into_inner(); + let mut devices = reply.devices; + + devices.sort_by(|a, b| a.name.cmp(&b.name)); + + match self.format { + ListDevicesFormat::Table => { + self.print_devices_table(devices)?; + } + + ListDevicesFormat::Simple => { + for device in devices { + println!("{}\t{}\t{}", device.name, device.claimed, device.owner); + } + } + + ListDevicesFormat::Json | ListDevicesFormat::JsonPretty | ListDevicesFormat::Yaml => { + let mut values = Vec::new(); + for device in devices { + let message = proto2dynamic(device)?; + values.push(serde_json::to_value(message)?); + } + let value = Value::Array(values); + let encoded = if self.format == ListDevicesFormat::JsonPretty { + serde_json::to_string_pretty(&value)? + } else if self.format == ListDevicesFormat::Yaml { + serde_yaml::to_string(&value)? + } else { + serde_json::to_string(&value)? + }; + println!("{}", encoded.trim()); + } + + ListDevicesFormat::Jsonl => { + for device in devices { + let message = proto2dynamic(device)?; + println!("{}", serde_json::to_string(&message)?); + } + } + + ListDevicesFormat::KeyValue => { + self.print_key_value(devices)?; + } + } + + Ok(()) + } + + fn print_devices_table(&self, devices: Vec) -> Result<()> { + let mut table = Table::new(); + table.load_preset(UTF8_FULL_CONDENSED); + table.set_content_arrangement(comfy_table::ContentArrangement::Dynamic); + table.set_header(vec!["name", "status", "owner"]); + for device in devices { + let status_text = if device.claimed { + "claimed" + } else { + "available" + }; + + let status_color = if device.claimed { + Color::Blue + } else { + Color::Green + }; + + table.add_row(vec![ + Cell::new(device.name), + Cell::new(status_text).fg(status_color), + Cell::new(device.owner), + ]); + } + if table.is_empty() { + println!("no devices configured"); + } else { + println!("{}", table); + } + Ok(()) + } + + fn print_key_value(&self, devices: Vec) -> Result<()> { + for device in devices { + let kvs = proto2kv(device)?; + println!("{}", kv2line(kvs)); + } + Ok(()) + } +} diff --git a/crates/ctl/src/cli/mod.rs b/crates/ctl/src/cli/mod.rs index cc549cf..257539c 100644 --- a/crates/ctl/src/cli/mod.rs +++ b/crates/ctl/src/cli/mod.rs @@ -5,6 +5,7 @@ pub mod identify_host; pub mod idm_snoop; pub mod launch; pub mod list; +pub mod list_devices; pub mod logs; pub mod metrics; pub mod pull; @@ -24,8 +25,9 @@ use tonic::{transport::Channel, Request}; use self::{ attach::AttachCommand, destroy::DestroyCommand, exec::ExecCommand, identify_host::IdentifyHostCommand, idm_snoop::IdmSnoopCommand, launch::LaunchCommand, - list::ListCommand, logs::LogsCommand, metrics::MetricsCommand, pull::PullCommand, - resolve::ResolveCommand, top::TopCommand, watch::WatchCommand, + list::ListCommand, list_devices::ListDevicesCommand, logs::LogsCommand, + metrics::MetricsCommand, pull::PullCommand, resolve::ResolveCommand, top::TopCommand, + watch::WatchCommand, }; #[derive(Parser)] @@ -51,6 +53,7 @@ pub enum Commands { Launch(LaunchCommand), Destroy(DestroyCommand), List(ListCommand), + ListDevices(ListDevicesCommand), Attach(AttachCommand), Pull(PullCommand), Logs(LogsCommand), @@ -120,6 +123,10 @@ impl ControlCommand { Commands::Exec(exec) => { exec.run(client).await?; } + + Commands::ListDevices(list) => { + list.run(client, events).await?; + } } Ok(()) } diff --git a/crates/daemon/Cargo.toml b/crates/daemon/Cargo.toml index 77a9ad6..7a08dd2 100644 --- a/crates/daemon/Cargo.toml +++ b/crates/daemon/Cargo.toml @@ -24,9 +24,11 @@ log = { workspace = true } prost = { workspace = true } redb = { workspace = true } scopeguard = { workspace = true } +serde = { workspace = true } signal-hook = { workspace = true } tokio = { workspace = true } tokio-stream = { workspace = true } +toml = { workspace = true } krata-tokio-tar = { workspace = true } tonic = { workspace = true, features = ["tls"] } uuid = { workspace = true } diff --git a/crates/daemon/src/config.rs b/crates/daemon/src/config.rs new file mode 100644 index 0000000..f277015 --- /dev/null +++ b/crates/daemon/src/config.rs @@ -0,0 +1,55 @@ +use std::{collections::HashMap, path::Path}; + +use anyhow::Result; +use serde::{Deserialize, Serialize}; +use tokio::fs; + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct DaemonConfig { + #[serde(default)] + pub pci: DaemonPciConfig, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct DaemonPciConfig { + #[serde(default)] + pub devices: HashMap, +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct DaemonPciDeviceConfig { + pub locations: Vec, + #[serde(default)] + pub permissive: bool, + #[serde(default)] + #[serde(rename = "msi-translate")] + pub msi_translate: bool, + #[serde(default)] + #[serde(rename = "power-management")] + pub power_management: bool, + #[serde(default)] + #[serde(rename = "rdm-reserve-policy")] + pub rdm_reserve_policy: DaemonPciDeviceRdmReservePolicy, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub enum DaemonPciDeviceRdmReservePolicy { + #[default] + #[serde(rename = "strict")] + Strict, + #[serde(rename = "relaxed")] + Relaxed, +} + +impl DaemonConfig { + pub async fn load(path: &Path) -> Result { + if path.exists() { + let content = fs::read_to_string(path).await?; + let config: DaemonConfig = toml::from_str(&content)?; + Ok(config) + } else { + fs::write(&path, "").await?; + Ok(DaemonConfig::default()) + } + } +} diff --git a/crates/daemon/src/control.rs b/crates/daemon/src/control.rs index 486adfd..e24a2aa 100644 --- a/crates/daemon/src/control.rs +++ b/crates/daemon/src/control.rs @@ -11,10 +11,11 @@ use krata::{ control::{ control_service_server::ControlService, ConsoleDataReply, ConsoleDataRequest, CreateGuestReply, CreateGuestRequest, DestroyGuestReply, DestroyGuestRequest, - ExecGuestReply, ExecGuestRequest, IdentifyHostReply, IdentifyHostRequest, - ListGuestsReply, ListGuestsRequest, PullImageReply, PullImageRequest, - ReadGuestMetricsReply, ReadGuestMetricsRequest, ResolveGuestReply, ResolveGuestRequest, - SnoopIdmReply, SnoopIdmRequest, WatchEventsReply, WatchEventsRequest, + DeviceInfo, ExecGuestReply, ExecGuestRequest, IdentifyHostReply, IdentifyHostRequest, + ListDevicesReply, ListDevicesRequest, ListGuestsReply, ListGuestsRequest, + PullImageReply, PullImageRequest, ReadGuestMetricsReply, ReadGuestMetricsRequest, + ResolveGuestReply, ResolveGuestRequest, SnoopIdmReply, SnoopIdmRequest, + WatchEventsReply, WatchEventsRequest, }, }, }; @@ -35,8 +36,8 @@ use uuid::Uuid; use crate::{ command::DaemonCommand, console::DaemonConsoleHandle, db::GuestStore, - event::DaemonEventContext, glt::GuestLookupTable, idm::DaemonIdmHandle, - metrics::idm_metric_to_api, oci::convert_oci_progress, + devices::DaemonDeviceManager, event::DaemonEventContext, glt::GuestLookupTable, + idm::DaemonIdmHandle, metrics::idm_metric_to_api, oci::convert_oci_progress, }; pub struct ApiError { @@ -60,6 +61,7 @@ impl From for Status { #[derive(Clone)] pub struct DaemonControlService { glt: GuestLookupTable, + devices: DaemonDeviceManager, events: DaemonEventContext, console: DaemonConsoleHandle, idm: DaemonIdmHandle, @@ -69,8 +71,10 @@ pub struct DaemonControlService { } impl DaemonControlService { + #[allow(clippy::too_many_arguments)] pub fn new( glt: GuestLookupTable, + devices: DaemonDeviceManager, events: DaemonEventContext, console: DaemonConsoleHandle, idm: DaemonIdmHandle, @@ -80,6 +84,7 @@ impl DaemonControlService { ) -> Self { Self { glt, + devices, events, console, idm, @@ -524,4 +529,23 @@ impl ControlService for DaemonControlService { }; Ok(Response::new(Box::pin(output) as Self::SnoopIdmStream)) } + + async fn list_devices( + &self, + request: Request, + ) -> Result, Status> { + let _ = request.into_inner(); + let mut devices = Vec::new(); + let state = self.devices.copy().await.map_err(|error| ApiError { + message: error.to_string(), + })?; + for (name, state) in state { + devices.push(DeviceInfo { + name, + claimed: state.owner.is_some(), + owner: state.owner.map(|x| x.to_string()).unwrap_or_default(), + }); + } + Ok(Response::new(ListDevicesReply { devices })) + } } diff --git a/crates/daemon/src/devices.rs b/crates/daemon/src/devices.rs new file mode 100644 index 0000000..fe63073 --- /dev/null +++ b/crates/daemon/src/devices.rs @@ -0,0 +1,106 @@ +use std::{collections::HashMap, sync::Arc}; + +use anyhow::{anyhow, Result}; +use log::warn; +use tokio::sync::RwLock; +use uuid::Uuid; + +use crate::config::{DaemonConfig, DaemonPciDeviceConfig}; + +#[derive(Clone)] +pub struct DaemonDeviceState { + pub pci: Option, + pub owner: Option, +} + +#[derive(Clone)] +pub struct DaemonDeviceManager { + config: Arc, + devices: Arc>>, +} + +impl DaemonDeviceManager { + pub fn new(config: Arc) -> Self { + Self { + config, + devices: Arc::new(RwLock::new(HashMap::new())), + } + } + + pub async fn claim(&self, device: &str, uuid: Uuid) -> Result { + let mut devices = self.devices.write().await; + let Some(state) = devices.get_mut(device) else { + return Err(anyhow!( + "unable to claim unknown device '{}' for guest {}", + device, + uuid + )); + }; + + if let Some(owner) = state.owner { + return Err(anyhow!( + "unable to claim device '{}' for guest {}: already claimed by {}", + device, + uuid, + owner + )); + } + + state.owner = Some(uuid); + Ok(state.clone()) + } + + pub async fn release_all(&self, uuid: Uuid) -> Result<()> { + let mut devices = self.devices.write().await; + for state in (*devices).values_mut() { + if state.owner == Some(uuid) { + state.owner = None; + } + } + Ok(()) + } + + pub async fn release(&self, device: &str, uuid: Uuid) -> Result<()> { + let mut devices = self.devices.write().await; + let Some(state) = devices.get_mut(device) else { + return Ok(()); + }; + + if let Some(owner) = state.owner { + if owner != uuid { + return Ok(()); + } + } + + state.owner = None; + Ok(()) + } + + pub async fn update_claims(&self, claims: HashMap) -> Result<()> { + let mut devices = self.devices.write().await; + devices.clear(); + for (name, pci) in &self.config.pci.devices { + let owner = claims.get(name).cloned(); + devices.insert( + name.clone(), + DaemonDeviceState { + owner, + pci: Some(pci.clone()), + }, + ); + } + + for (name, uuid) in &claims { + if !devices.contains_key(name) { + warn!("unknown device '{}' assigned to guest {}", name, uuid); + } + } + + Ok(()) + } + + pub async fn copy(&self) -> Result> { + let devices = self.devices.read().await; + Ok(devices.clone()) + } +} diff --git a/crates/daemon/src/lib.rs b/crates/daemon/src/lib.rs index 7df39a2..e06d1a7 100644 --- a/crates/daemon/src/lib.rs +++ b/crates/daemon/src/lib.rs @@ -1,9 +1,11 @@ -use std::{net::SocketAddr, path::PathBuf, str::FromStr}; +use std::{net::SocketAddr, path::PathBuf, str::FromStr, sync::Arc}; use anyhow::{anyhow, Result}; +use config::DaemonConfig; use console::{DaemonConsole, DaemonConsoleHandle}; use control::DaemonControlService; use db::GuestStore; +use devices::DaemonDeviceManager; use event::{DaemonEventContext, DaemonEventGenerator}; use glt::GuestLookupTable; use idm::{DaemonIdm, DaemonIdmHandle}; @@ -23,9 +25,11 @@ use tonic::transport::{Identity, Server, ServerTlsConfig}; use uuid::Uuid; pub mod command; +pub mod config; pub mod console; pub mod control; pub mod db; +pub mod devices; pub mod event; pub mod glt; pub mod idm; @@ -35,7 +39,9 @@ pub mod reconcile; pub struct Daemon { store: String, + _config: Arc, glt: GuestLookupTable, + devices: DaemonDeviceManager, guests: GuestStore, events: DaemonEventContext, guest_reconciler_task: JoinHandle<()>, @@ -50,12 +56,20 @@ const GUEST_RECONCILER_QUEUE_LEN: usize = 1000; impl Daemon { pub async fn new(store: String) -> Result { - let mut image_cache_dir = PathBuf::from(store.clone()); + let store_dir = PathBuf::from(store.clone()); + let mut config_path = store_dir.clone(); + config_path.push("config.toml"); + + let config = DaemonConfig::load(&config_path).await?; + let config = Arc::new(config); + let devices = DaemonDeviceManager::new(config.clone()); + + let mut image_cache_dir = store_dir.clone(); image_cache_dir.push("cache"); image_cache_dir.push("image"); fs::create_dir_all(&image_cache_dir).await?; - let mut host_uuid_path = PathBuf::from(store.clone()); + let mut host_uuid_path = store_dir.clone(); host_uuid_path.push("host.uuid"); let host_uuid = if host_uuid_path.is_file() { let content = fs::read_to_string(&host_uuid_path).await?; @@ -74,8 +88,9 @@ impl Daemon { generated }; - let initrd_path = detect_guest_file(&store, "initrd")?; - let kernel_path = detect_guest_file(&store, "kernel")?; + let initrd_path = detect_guest_path(&store, "initrd")?; + let kernel_path = detect_guest_path(&store, "kernel")?; + let addons_path = detect_guest_path(&store, "addons.squashfs")?; let packer = OciPackerService::new(None, &image_cache_dir, OciPlatform::current()).await?; let runtime = Runtime::new().await?; @@ -93,6 +108,7 @@ impl Daemon { .await?; let runtime_for_reconciler = runtime.dupe().await?; let guest_reconciler = GuestReconciler::new( + devices.clone(), glt.clone(), guests.clone(), events.clone(), @@ -101,6 +117,7 @@ impl Daemon { guest_reconciler_notify.clone(), kernel_path, initrd_path, + addons_path, )?; let guest_reconciler_task = guest_reconciler.launch(guest_reconciler_receiver).await?; @@ -108,7 +125,9 @@ impl Daemon { Ok(Self { store, + _config: config, glt, + devices, guests, events, guest_reconciler_task, @@ -123,6 +142,7 @@ impl Daemon { pub async fn listen(&mut self, addr: ControlDialAddress) -> Result<()> { let control_service = DaemonControlService::new( self.glt.clone(), + self.devices.clone(), self.events.clone(), self.console.clone(), self.idm.clone(), @@ -186,7 +206,7 @@ impl Drop for Daemon { } } -fn detect_guest_file(store: &str, name: &str) -> Result { +fn detect_guest_path(store: &str, name: &str) -> Result { let mut path = PathBuf::from(format!("{}/guest/{}", store, name)); if path.is_file() { return Ok(path); diff --git a/crates/daemon/src/reconcile/guest/mod.rs b/crates/daemon/src/reconcile/guest/mod.rs index 64fdc67..6e0e015 100644 --- a/crates/daemon/src/reconcile/guest/mod.rs +++ b/crates/daemon/src/reconcile/guest/mod.rs @@ -26,6 +26,7 @@ use uuid::Uuid; use crate::{ db::GuestStore, + devices::DaemonDeviceManager, event::{DaemonEvent, DaemonEventContext}, glt::GuestLookupTable, }; @@ -55,6 +56,7 @@ impl Drop for GuestReconcilerEntry { #[derive(Clone)] pub struct GuestReconciler { + devices: DaemonDeviceManager, glt: GuestLookupTable, guests: GuestStore, events: DaemonEventContext, @@ -62,6 +64,7 @@ pub struct GuestReconciler { packer: OciPackerService, kernel_path: PathBuf, initrd_path: PathBuf, + addons_path: PathBuf, tasks: Arc>>, guest_reconciler_notify: Sender, reconcile_lock: Arc>, @@ -70,6 +73,7 @@ pub struct GuestReconciler { impl GuestReconciler { #[allow(clippy::too_many_arguments)] pub fn new( + devices: DaemonDeviceManager, glt: GuestLookupTable, guests: GuestStore, events: DaemonEventContext, @@ -78,8 +82,10 @@ impl GuestReconciler { guest_reconciler_notify: Sender, kernel_path: PathBuf, initrd_path: PathBuf, + modules_path: PathBuf, ) -> Result { Ok(Self { + devices, glt, guests, events, @@ -87,6 +93,7 @@ impl GuestReconciler { packer, kernel_path, initrd_path, + addons_path: modules_path, tasks: Arc::new(Mutex::new(HashMap::new())), guest_reconciler_notify, reconcile_lock: Arc::new(RwLock::with_max_readers((), PARALLEL_LIMIT)), @@ -152,6 +159,8 @@ impl GuestReconciler { self.guests.remove(guest.uuid).await?; } + let mut device_claims = HashMap::new(); + for (uuid, mut stored_guest) in stored_guests { let previous_guest = stored_guest.clone(); let runtime_guest = runtime_guests.iter().find(|x| x.uuid == uuid); @@ -173,6 +182,17 @@ impl GuestReconciler { } else { state.status = GuestStatus::Started.into(); } + + for device in &stored_guest + .spec + .as_ref() + .cloned() + .unwrap_or_default() + .devices + { + device_claims.insert(device.name.clone(), uuid); + } + state.network = Some(guestinfo_to_networkstate(runtime)); stored_guest.state = Some(state); } @@ -185,6 +205,9 @@ impl GuestReconciler { let _ = self.guest_reconciler_notify.try_send(uuid); } } + + self.devices.update_claims(device_claims).await?; + Ok(()) } @@ -255,8 +278,10 @@ impl GuestReconciler { async fn start(&self, uuid: Uuid, guest: &mut Guest) -> Result { let starter = GuestStarter { + devices: &self.devices, kernel_path: &self.kernel_path, initrd_path: &self.initrd_path, + addons_path: &self.addons_path, packer: &self.packer, glt: &self.glt, runtime: &self.runtime, @@ -293,6 +318,7 @@ impl GuestReconciler { host: self.glt.host_uuid().to_string(), domid: domid.unwrap_or(u32::MAX), }); + self.devices.release_all(uuid).await?; Ok(GuestReconcilerResult::Changed { rerun: false }) } diff --git a/crates/daemon/src/reconcile/guest/start.rs b/crates/daemon/src/reconcile/guest/start.rs index 92bf490..c89314f 100644 --- a/crates/daemon/src/reconcile/guest/start.rs +++ b/crates/daemon/src/reconcile/guest/start.rs @@ -1,5 +1,7 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; +use std::str::FromStr; +use std::sync::atomic::{AtomicBool, Ordering}; use anyhow::{anyhow, Result}; use futures::StreamExt; @@ -7,6 +9,7 @@ use krata::launchcfg::LaunchPackedFormat; use krata::v1::common::GuestOciImageSpec; use krata::v1::common::{guest_image_spec::Image, Guest, GuestState, GuestStatus, OciImageFormat}; use krataoci::packer::{service::OciPackerService, OciPackedFormat}; +use kratart::launch::{PciBdf, PciDevice, PciRdmReservePolicy}; use kratart::{launch::GuestLaunchRequest, Runtime}; use log::info; @@ -15,6 +18,8 @@ use tokio::io::AsyncReadExt; use tokio_tar::Archive; use uuid::Uuid; +use crate::config::DaemonPciDeviceRdmReservePolicy; +use crate::devices::DaemonDeviceManager; use crate::{ glt::GuestLookupTable, reconcile::guest::{guestinfo_to_networkstate, GuestReconcilerResult}, @@ -24,8 +29,10 @@ use crate::{ const OCI_SPEC_TAR_FILE_MAX_SIZE: usize = 100 * 1024 * 1024; pub struct GuestStarter<'a> { + pub devices: &'a DaemonDeviceManager, pub kernel_path: &'a Path, pub initrd_path: &'a Path, + pub addons_path: &'a Path, pub packer: &'a OciPackerService, pub glt: &'a GuestLookupTable, pub runtime: &'a Runtime, @@ -135,6 +142,48 @@ impl GuestStarter<'_> { fs::read(&self.initrd_path).await? }; + let success = AtomicBool::new(false); + + let _device_release_guard = scopeguard::guard( + (spec.devices.clone(), self.devices.clone()), + |(devices, manager)| { + if !success.load(Ordering::Acquire) { + tokio::task::spawn(async move { + for device in devices { + let _ = manager.release(&device.name, uuid).await; + } + }); + } + }, + ); + + let mut pcis = Vec::new(); + for device in &spec.devices { + let state = self.devices.claim(&device.name, uuid).await?; + if let Some(cfg) = state.pci { + for location in cfg.locations { + let pci = PciDevice { + bdf: PciBdf::from_str(&location)?.with_domain(0), + permissive: cfg.permissive, + msi_translate: cfg.msi_translate, + power_management: cfg.power_management, + rdm_reserve_policy: match cfg.rdm_reserve_policy { + DaemonPciDeviceRdmReservePolicy::Strict => PciRdmReservePolicy::Strict, + DaemonPciDeviceRdmReservePolicy::Relaxed => { + PciRdmReservePolicy::Relaxed + } + }, + }; + pcis.push(pci); + } + } else { + return Err(anyhow!( + "device '{}' isn't a known device type", + device.name + )); + } + } + let info = self .runtime .launch(GuestLaunchRequest { @@ -150,6 +199,7 @@ impl GuestStarter<'_> { initrd, vcpus: spec.vcpus, mem: spec.mem, + pcis, env: task .environment .iter() @@ -157,6 +207,7 @@ impl GuestStarter<'_> { .collect::>(), run: empty_vec_optional(task.command.clone()), debug: false, + addons_image: Some(self.addons_path.to_path_buf()), }) .await?; self.glt.associate(uuid, info.domid).await; @@ -169,6 +220,7 @@ impl GuestStarter<'_> { host: self.glt.host_uuid().to_string(), domid: info.domid, }); + success.store(true, Ordering::Release); Ok(GuestReconcilerResult::Changed { rerun: false }) } } diff --git a/crates/guest/Cargo.toml b/crates/guest/Cargo.toml index b802e1f..c8e2e76 100644 --- a/crates/guest/Cargo.toml +++ b/crates/guest/Cargo.toml @@ -21,6 +21,7 @@ log = { workspace = true } nix = { workspace = true, features = ["ioctl", "process", "fs"] } oci-spec = { workspace = true } path-absolutize = { workspace = true } +platform-info = { workspace = true } rtnetlink = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/guest/src/init.rs b/crates/guest/src/init.rs index 7ef9854..e01c794 100644 --- a/crates/guest/src/init.rs +++ b/crates/guest/src/init.rs @@ -12,6 +12,7 @@ use nix::ioctl_write_int_bad; use nix::unistd::{dup2, execve, fork, ForkResult, Pid}; use oci_spec::image::{Config, ImageConfiguration}; use path_absolutize::Absolutize; +use platform_info::{PlatformInfo, PlatformInfoAPI, UNameAPI}; use std::collections::HashMap; use std::ffi::CString; use std::fs::{File, OpenOptions, Permissions}; @@ -50,6 +51,10 @@ const NEW_ROOT_DEV_PATH: &str = "/newroot/dev"; const IMAGE_CONFIG_JSON_PATH: &str = "/config/image/config.json"; const LAUNCH_CONFIG_JSON_PATH: &str = "/config/launch.json"; +const ADDONS_DEVICE_PATH: &str = "/dev/xvdc"; +const ADDONS_MOUNT_PATH: &str = "/addons"; +const ADDONS_MODULES_PATH: &str = "/addons/modules"; + ioctl_write_int_bad!(set_controlling_terminal, TIOCSCTTY); pub struct GuestInit {} @@ -88,7 +93,10 @@ impl GuestInit { self.mount_root_image(launch.root.format.clone()).await?; + self.mount_addons().await?; + self.mount_new_root().await?; + self.mount_kernel_modules().await?; self.bind_new_root().await?; if let Some(hostname) = launch.hostname.clone() { @@ -137,16 +145,60 @@ impl GuestInit { self.create_dir("/root", Some(0o0700)).await?; self.create_dir("/tmp", None).await?; self.create_dir("/run", Some(0o0755)).await?; - self.mount_kernel_fs("devtmpfs", "/dev", "mode=0755", None) + self.mount_kernel_fs("devtmpfs", "/dev", "mode=0755", None, None) + .await?; + self.mount_kernel_fs("proc", "/proc", "", None, None) + .await?; + self.mount_kernel_fs("sysfs", "/sys", "", None, None) + .await?; + self.create_dir("/dev/pts", Some(0o0755)).await?; + self.mount_kernel_fs("devpts", "/dev/pts", "", None, Some("/dev/ptmx")) .await?; - self.mount_kernel_fs("proc", "/proc", "", None).await?; - self.mount_kernel_fs("sysfs", "/sys", "", None).await?; fs::symlink("/proc/self/fd", "/dev/fd").await?; fs::symlink("/proc/self/fd/0", "/dev/stdin").await?; fs::symlink("/proc/self/fd/1", "/dev/stdout").await?; fs::symlink("/proc/self/fd/2", "/dev/stderr").await?; - self.mount_kernel_fs("cgroup2", "/sys/fs/cgroup", "", Some(MountFlags::RELATIME)) - .await?; + self.mount_kernel_fs( + "cgroup2", + "/sys/fs/cgroup", + "", + Some(MountFlags::RELATIME), + None, + ) + .await?; + Ok(()) + } + + async fn mount_addons(&mut self) -> Result<()> { + if !fs::try_exists(ADDONS_DEVICE_PATH).await? { + return Ok(()); + } + + self.mount_image( + &PathBuf::from(ADDONS_DEVICE_PATH), + &PathBuf::from(ADDONS_MOUNT_PATH), + LaunchPackedFormat::Squashfs, + ) + .await?; + Ok(()) + } + + async fn mount_kernel_modules(&mut self) -> Result<()> { + if !fs::try_exists(ADDONS_MODULES_PATH).await? { + return Ok(()); + } + + let Some(platform_info) = PlatformInfo::new().ok() else { + return Ok(()); + }; + + let kernel_release = platform_info.release().to_string_lossy().to_string(); + let modules_path = format!("/newroot/lib/modules/{}", kernel_release); + fs::create_dir_all(&modules_path).await?; + Mount::builder() + .fstype(FilesystemType::Manual("none")) + .flags(MountFlags::BIND | MountFlags::RDONLY) + .mount(ADDONS_MODULES_PATH, modules_path)?; Ok(()) } @@ -170,13 +222,14 @@ impl GuestInit { path: &str, data: &str, flags: Option, + source: Option<&str>, ) -> Result<()> { trace!("mounting kernel fs {} to {}", fstype, path); Mount::builder() .fstype(FilesystemType::Manual(fstype)) .flags(MountFlags::NOEXEC | MountFlags::NOSUID | flags.unwrap_or(MountFlags::empty())) .data(data) - .mount(fstype, path)?; + .mount(source.unwrap_or(fstype), path)?; Ok(()) } diff --git a/crates/krata/proto/krata/v1/common.proto b/crates/krata/proto/krata/v1/common.proto index d5e18c8..75f8b1e 100644 --- a/crates/krata/proto/krata/v1/common.proto +++ b/crates/krata/proto/krata/v1/common.proto @@ -25,6 +25,7 @@ message GuestSpec { uint64 mem = 6; GuestTaskSpec task = 7; repeated GuestSpecAnnotation annotations = 8; + repeated GuestSpecDevice devices = 9; } message GuestImageSpec { @@ -62,6 +63,10 @@ message GuestSpecAnnotation { string value = 2; } +message GuestSpecDevice { + string name = 1; +} + message GuestState { GuestStatus status = 1; GuestNetworkState network = 2; diff --git a/crates/krata/proto/krata/v1/control.proto b/crates/krata/proto/krata/v1/control.proto index ca49f5b..a91f038 100644 --- a/crates/krata/proto/krata/v1/control.proto +++ b/crates/krata/proto/krata/v1/control.proto @@ -16,6 +16,7 @@ service ControlService { rpc DestroyGuest(DestroyGuestRequest) returns (DestroyGuestReply); rpc ResolveGuest(ResolveGuestRequest) returns (ResolveGuestReply); rpc ListGuests(ListGuestsRequest) returns (ListGuestsReply); + rpc ListDevices(ListDevicesRequest) returns (ListDevicesReply); rpc ExecGuest(stream ExecGuestRequest) returns (stream ExecGuestReply); @@ -187,3 +188,15 @@ message PullImageReply { string digest = 2; krata.v1.common.OciImageFormat format = 3; } + +message DeviceInfo { + string name = 1; + bool claimed = 2; + string owner = 3; +} + +message ListDevicesRequest {} + +message ListDevicesReply { + repeated DeviceInfo devices = 1; +} diff --git a/crates/oci/src/name.rs b/crates/oci/src/name.rs index 5babe71..4908b59 100644 --- a/crates/oci/src/name.rs +++ b/crates/oci/src/name.rs @@ -47,7 +47,7 @@ impl Default for ImageName { } impl ImageName { - pub const DOCKER_HUB_MIRROR: &'static str = "registry.docker.io"; + pub const DOCKER_HUB_MIRROR: &'static str = "registry-1.docker.io"; pub const DEFAULT_IMAGE_TAG: &'static str = "latest"; pub fn parse(name: &str) -> Result { diff --git a/crates/runtime/Cargo.toml b/crates/runtime/Cargo.toml index d83b9c8..e71d1fb 100644 --- a/crates/runtime/Cargo.toml +++ b/crates/runtime/Cargo.toml @@ -24,6 +24,7 @@ krata-xenclient = { path = "../xen/xenclient", version = "^0.0.10" } krata-xenevtchn = { path = "../xen/xenevtchn", version = "^0.0.10" } krata-xengnt = { path = "../xen/xengnt", version = "^0.0.10" } krata-xenstore = { path = "../xen/xenstore", version = "^0.0.10" } +walkdir = { workspace = true } [lib] name = "kratart" diff --git a/crates/runtime/src/cfgblk.rs b/crates/runtime/src/cfgblk.rs index 00f3807..01cf97c 100644 --- a/crates/runtime/src/cfgblk.rs +++ b/crates/runtime/src/cfgblk.rs @@ -1,5 +1,6 @@ use anyhow::Result; -use backhand::{FilesystemWriter, NodeHeader}; +use backhand::compression::Compressor; +use backhand::{FilesystemCompressor, FilesystemWriter, NodeHeader}; use krata::launchcfg::LaunchInfo; use krataoci::packer::OciPackedImage; use log::trace; @@ -8,14 +9,14 @@ use std::fs::File; use std::path::PathBuf; use uuid::Uuid; -pub struct ConfigBlock<'a> { - pub image: &'a OciPackedImage, +pub struct ConfigBlock { + pub image: OciPackedImage, pub file: PathBuf, pub dir: PathBuf, } -impl ConfigBlock<'_> { - pub fn new<'a>(uuid: &Uuid, image: &'a OciPackedImage) -> Result> { +impl ConfigBlock { + pub fn new(uuid: &Uuid, image: OciPackedImage) -> Result { let mut dir = std::env::temp_dir().clone(); dir.push(format!("krata-cfg-{}", uuid)); fs::create_dir_all(&dir)?; @@ -29,6 +30,7 @@ impl ConfigBlock<'_> { let config = self.image.config.raw(); let launch = serde_json::to_string(launch_config)?; let mut writer = FilesystemWriter::default(); + writer.set_compressor(FilesystemCompressor::new(Compressor::Gzip, None)?); writer.push_dir( "/image", NodeHeader { diff --git a/crates/runtime/src/launch.rs b/crates/runtime/src/launch.rs index ca4d8b5..10e7286 100644 --- a/crates/runtime/src/launch.rs +++ b/crates/runtime/src/launch.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; use std::net::{IpAddr, Ipv6Addr}; +use std::path::PathBuf; use std::sync::Arc; use std::{fs, net::Ipv4Addr, str::FromStr}; @@ -21,6 +22,10 @@ use crate::RuntimeContext; use super::{GuestInfo, GuestState}; +pub use xenclient::{ + pci::PciBdf, DomainPciDevice as PciDevice, DomainPciRdmReservePolicy as PciRdmReservePolicy, +}; + pub struct GuestLaunchRequest { pub format: LaunchPackedFormat, pub kernel: Vec, @@ -31,8 +36,10 @@ pub struct GuestLaunchRequest { pub mem: u64, pub env: HashMap, pub run: Option>, + pub pcis: Vec, pub debug: bool, pub image: OciPackedImage, + pub addons_image: Option, } pub struct GuestLauncher { @@ -100,8 +107,10 @@ impl GuestLauncher { run: request.run, }; - let cfgblk = ConfigBlock::new(&uuid, &request.image)?; - cfgblk.build(&launch_config)?; + let cfgblk = ConfigBlock::new(&uuid, request.image.clone())?; + let cfgblk_file = cfgblk.file.clone(); + let cfgblk_dir = cfgblk.dir.clone(); + tokio::task::spawn_blocking(move || cfgblk.build(&launch_config)).await??; let image_squashfs_path = request .image @@ -109,18 +118,33 @@ impl GuestLauncher { .to_str() .ok_or_else(|| anyhow!("failed to convert image path to string"))?; - let cfgblk_dir_path = cfgblk - .dir + let cfgblk_dir_path = cfgblk_dir .to_str() .ok_or_else(|| anyhow!("failed to convert cfgblk directory path to string"))?; - let cfgblk_squashfs_path = cfgblk - .file + let cfgblk_squashfs_path = cfgblk_file .to_str() .ok_or_else(|| anyhow!("failed to convert cfgblk squashfs path to string"))?; + let addons_squashfs_path = request + .addons_image + .map(|x| x.to_str().map(|x| x.to_string())) + .map(|x| { + Some(x.ok_or_else(|| anyhow!("failed to convert addons squashfs path to string"))) + }) + .unwrap_or(None); + + let addons_squashfs_path = if let Some(path) = addons_squashfs_path { + Some(path?) + } else { + None + }; let image_squashfs_loop = context.autoloop.loopify(image_squashfs_path)?; let cfgblk_squashfs_loop = context.autoloop.loopify(cfgblk_squashfs_path)?; - + let addons_squashfs_loop = if let Some(ref addons_squashfs_path) = addons_squashfs_path { + Some(context.autoloop.loopify(addons_squashfs_path)?) + } else { + None + }; let cmdline_options = [ if request.debug { "debug" } else { "quiet" }, "elevator=noop", @@ -130,19 +154,48 @@ impl GuestLauncher { let guest_mac_string = container_mac.to_string().replace('-', ":"); let gateway_mac_string = gateway_mac.to_string().replace('-', ":"); + let mut disks = vec![ + DomainDisk { + vdev: "xvda".to_string(), + block: image_squashfs_loop.clone(), + writable: false, + }, + DomainDisk { + vdev: "xvdb".to_string(), + block: cfgblk_squashfs_loop.clone(), + writable: false, + }, + ]; + + if let Some(ref addons) = addons_squashfs_loop { + disks.push(DomainDisk { + vdev: "xvdc".to_string(), + block: addons.clone(), + writable: false, + }); + } + + let mut loops = vec![ + format!("{}:{}:none", image_squashfs_loop.path, image_squashfs_path), + format!( + "{}:{}:{}", + cfgblk_squashfs_loop.path, cfgblk_squashfs_path, cfgblk_dir_path + ), + ]; + + if let Some(ref addons) = addons_squashfs_loop { + loops.push(format!( + "{}:{}:none", + addons.path, + addons_squashfs_path + .clone() + .ok_or_else(|| anyhow!("addons squashfs path missing"))? + )); + } + let mut extra_keys = vec![ ("krata/uuid".to_string(), uuid.to_string()), - ( - "krata/loops".to_string(), - format!( - "{}:{}:none,{}:{}:{}", - &image_squashfs_loop.path, - image_squashfs_path, - &cfgblk_squashfs_loop.path, - cfgblk_squashfs_path, - cfgblk_dir_path, - ), - ), + ("krata/loops".to_string(), loops.join(",")), ( "krata/network/guest/ipv4".to_string(), format!("{}/{}", guest_ipv4, ipv4_network_mask), @@ -182,18 +235,7 @@ impl GuestLauncher { initrd: request.initrd, cmdline, use_console_backend: Some("krata-console".to_string()), - disks: vec![ - DomainDisk { - vdev: "xvda".to_string(), - block: image_squashfs_loop.clone(), - writable: false, - }, - DomainDisk { - vdev: "xvdb".to_string(), - block: cfgblk_squashfs_loop.clone(), - writable: false, - }, - ], + disks, channels: vec![DomainChannel { typ: "krata-channel".to_string(), initialized: false, @@ -204,6 +246,7 @@ impl GuestLauncher { bridge: None, script: None, }], + pcis: request.pcis.clone(), filesystems: vec![], event_channels: vec![], extra_keys, @@ -239,7 +282,7 @@ impl GuestLauncher { Err(error) => { let _ = context.autoloop.unloop(&image_squashfs_loop.path).await; let _ = context.autoloop.unloop(&cfgblk_squashfs_loop.path).await; - let _ = fs::remove_dir(&cfgblk.dir); + let _ = fs::remove_dir(&cfgblk_dir); Err(error.into()) } } diff --git a/crates/xen/xencall/src/lib.rs b/crates/xen/xencall/src/lib.rs index ff033e1..5699df6 100644 --- a/crates/xen/xencall/src/lib.rs +++ b/crates/xen/xencall/src/lib.rs @@ -3,23 +3,29 @@ pub mod sys; use crate::error::{Error, Result}; use crate::sys::{ - AddressSize, CreateDomain, DomCtl, DomCtlValue, DomCtlVcpuContext, EvtChnAllocUnbound, - GetDomainInfo, GetPageFrameInfo3, Hypercall, HypercallInit, MaxMem, MaxVcpus, MemoryMap, - MemoryReservation, MmapBatch, MmapResource, MmuExtOp, MultiCallEntry, VcpuGuestContext, - VcpuGuestContextAny, XenCapabilitiesInfo, HYPERVISOR_DOMCTL, HYPERVISOR_EVENT_CHANNEL_OP, - HYPERVISOR_MEMORY_OP, HYPERVISOR_MMUEXT_OP, HYPERVISOR_MULTICALL, HYPERVISOR_XEN_VERSION, - XENVER_CAPABILITIES, XEN_DOMCTL_CREATEDOMAIN, XEN_DOMCTL_DESTROYDOMAIN, - XEN_DOMCTL_GETDOMAININFO, XEN_DOMCTL_GETPAGEFRAMEINFO3, XEN_DOMCTL_GETVCPUCONTEXT, - XEN_DOMCTL_HYPERCALL_INIT, XEN_DOMCTL_MAX_MEM, XEN_DOMCTL_MAX_VCPUS, XEN_DOMCTL_PAUSEDOMAIN, - XEN_DOMCTL_SETVCPUCONTEXT, XEN_DOMCTL_SET_ADDRESS_SIZE, XEN_DOMCTL_UNPAUSEDOMAIN, - XEN_MEM_CLAIM_PAGES, XEN_MEM_MEMORY_MAP, XEN_MEM_POPULATE_PHYSMAP, + AddressSize, AssignDevice, CreateDomain, DomCtl, DomCtlValue, DomCtlVcpuContext, + EvtChnAllocUnbound, GetDomainInfo, GetPageFrameInfo3, Hypercall, HypercallInit, + IoMemPermission, IoPortPermission, IrqPermission, MaxMem, MaxVcpus, MemoryMap, + MemoryReservation, MmapBatch, MmapResource, MmuExtOp, MultiCallEntry, PciAssignDevice, + VcpuGuestContext, VcpuGuestContextAny, XenCapabilitiesInfo, DOMCTL_DEV_PCI, HYPERVISOR_DOMCTL, + HYPERVISOR_EVENT_CHANNEL_OP, HYPERVISOR_MEMORY_OP, HYPERVISOR_MMUEXT_OP, HYPERVISOR_MULTICALL, + HYPERVISOR_XEN_VERSION, XENVER_CAPABILITIES, XEN_DOMCTL_ASSIGN_DEVICE, XEN_DOMCTL_CREATEDOMAIN, + XEN_DOMCTL_DESTROYDOMAIN, XEN_DOMCTL_GETDOMAININFO, XEN_DOMCTL_GETPAGEFRAMEINFO3, + XEN_DOMCTL_GETVCPUCONTEXT, XEN_DOMCTL_HYPERCALL_INIT, XEN_DOMCTL_IOMEM_PERMISSION, + XEN_DOMCTL_IOPORT_PERMISSION, XEN_DOMCTL_IRQ_PERMISSION, XEN_DOMCTL_MAX_MEM, + XEN_DOMCTL_MAX_VCPUS, XEN_DOMCTL_PAUSEDOMAIN, XEN_DOMCTL_SETVCPUCONTEXT, + XEN_DOMCTL_SET_ADDRESS_SIZE, XEN_DOMCTL_UNPAUSEDOMAIN, XEN_MEM_CLAIM_PAGES, XEN_MEM_MEMORY_MAP, + XEN_MEM_POPULATE_PHYSMAP, }; use libc::{c_int, mmap, usleep, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE}; use log::trace; use nix::errno::Errno; use std::ffi::{c_long, c_uint, c_ulong, c_void}; use std::sync::Arc; -use sys::{XEN_DOMCTL_MAX_INTERFACE_VERSION, XEN_DOMCTL_MIN_INTERFACE_VERSION}; +use sys::{ + E820Entry, ForeignMemoryMap, PhysdevMapPirq, HYPERVISOR_PHYSDEV_OP, PHYSDEVOP_MAP_PIRQ, + XEN_DOMCTL_MAX_INTERFACE_VERSION, XEN_DOMCTL_MIN_INTERFACE_VERSION, XEN_MEM_SET_MEMORY_MAP, +}; use tokio::sync::Semaphore; use std::fs::{File, OpenOptions}; @@ -569,26 +575,42 @@ impl XenCall { Ok(()) } - pub async fn get_memory_map(&self, size_of_entry: usize) -> Result> { + pub async fn get_memory_map(&self, max_entries: u32) -> Result> { let mut memory_map = MemoryMap { - count: 0, + count: max_entries, buffer: 0, }; + let mut entries = vec![E820Entry::default(); max_entries as usize]; + memory_map.buffer = entries.as_mut_ptr() as c_ulong; + self.hypercall2( + HYPERVISOR_MEMORY_OP, + XEN_MEM_MEMORY_MAP as c_ulong, + addr_of_mut!(memory_map) as c_ulong, + ) + .await?; + entries.truncate(memory_map.count as usize); + Ok(entries) + } + + pub async fn set_memory_map( + &self, + domid: u32, + entries: Vec, + ) -> Result> { + let mut memory_map = ForeignMemoryMap { + domid: domid as u16, + map: MemoryMap { + count: entries.len() as u32, + buffer: entries.as_ptr() as u64, + }, + }; self.hypercall2( HYPERVISOR_MEMORY_OP, - XEN_MEM_MEMORY_MAP as c_ulong, + XEN_MEM_SET_MEMORY_MAP as c_ulong, addr_of_mut!(memory_map) as c_ulong, ) .await?; - let mut buffer = vec![0u8; memory_map.count as usize * size_of_entry]; - memory_map.buffer = buffer.as_mut_ptr() as c_ulong; - self.hypercall2( - HYPERVISOR_MEMORY_OP, - XEN_MEM_MEMORY_MAP as c_ulong, - addr_of_mut!(memory_map) as c_ulong, - ) - .await?; - Ok(buffer) + Ok(entries) } pub async fn populate_physmap( @@ -671,4 +693,140 @@ impl XenCall { .await .map(|_| ()) } + + pub async fn iomem_permission( + &self, + domid: u32, + first_mfn: u64, + nr_mfns: u64, + allow: bool, + ) -> Result<()> { + trace!( + "domctl fd={} iomem_permission domid={} first_mfn={:#x}, nr_mfns={:#x} allow={}", + self.handle.as_raw_fd(), + domid, + first_mfn, + nr_mfns, + allow, + ); + let mut domctl = DomCtl { + cmd: XEN_DOMCTL_IOMEM_PERMISSION, + interface_version: self.domctl_interface_version, + domid, + value: DomCtlValue { + iomem_permission: IoMemPermission { + first_mfn, + nr_mfns, + allow: if allow { 1 } else { 0 }, + }, + }, + }; + self.hypercall1(HYPERVISOR_DOMCTL, addr_of_mut!(domctl) as c_ulong) + .await?; + Ok(()) + } + + pub async fn ioport_permission( + &self, + domid: u32, + first_port: u32, + nr_ports: u32, + allow: bool, + ) -> Result<()> { + trace!( + "domctl fd={} ioport_permission domid={} first_port={:#x}, nr_ports={:#x} allow={}", + self.handle.as_raw_fd(), + domid, + first_port, + nr_ports, + allow, + ); + let mut domctl = DomCtl { + cmd: XEN_DOMCTL_IOPORT_PERMISSION, + interface_version: self.domctl_interface_version, + domid, + value: DomCtlValue { + ioport_permission: IoPortPermission { + first_port, + nr_ports, + allow: if allow { 1 } else { 0 }, + }, + }, + }; + self.hypercall1(HYPERVISOR_DOMCTL, addr_of_mut!(domctl) as c_ulong) + .await?; + Ok(()) + } + + pub async fn irq_permission(&self, domid: u32, irq: u32, allow: bool) -> Result<()> { + trace!( + "domctl fd={} irq_permission domid={} irq={} allow={}", + self.handle.as_raw_fd(), + domid, + irq, + allow, + ); + let mut domctl = DomCtl { + cmd: XEN_DOMCTL_IRQ_PERMISSION, + interface_version: self.domctl_interface_version, + domid, + value: DomCtlValue { + irq_permission: IrqPermission { + pirq: irq, + allow: if allow { 1 } else { 0 }, + pad: [0; 3], + }, + }, + }; + self.hypercall1(HYPERVISOR_DOMCTL, addr_of_mut!(domctl) as c_ulong) + .await?; + Ok(()) + } + + pub async fn map_pirq(&self, domid: u32, index: isize, pirq: Option) -> Result { + trace!( + "physdev fd={} map_pirq domid={} index={} pirq={:?}", + self.handle.as_raw_fd(), + domid, + index, + pirq, + ); + let mut physdev = PhysdevMapPirq::default(); + physdev.domid = domid as u16; + physdev.typ = 0x1; + physdev.index = index as c_int; + physdev.pirq = pirq.map(|x| x as c_int).unwrap_or(index as c_int); + self.hypercall2( + HYPERVISOR_PHYSDEV_OP, + PHYSDEVOP_MAP_PIRQ, + addr_of_mut!(physdev) as c_ulong, + ) + .await?; + Ok(physdev.pirq as u32) + } + + pub async fn assign_device(&self, domid: u32, sbdf: u32, flags: u32) -> Result<()> { + trace!( + "domctl fd={} assign_device domid={} sbdf={} flags={}", + self.handle.as_raw_fd(), + domid, + sbdf, + flags, + ); + let mut domctl = DomCtl { + cmd: XEN_DOMCTL_ASSIGN_DEVICE, + interface_version: self.domctl_interface_version, + domid, + value: DomCtlValue { + assign_device: AssignDevice { + device: DOMCTL_DEV_PCI, + flags, + pci_assign_device: PciAssignDevice { sbdf, padding: 0 }, + }, + }, + }; + self.hypercall1(HYPERVISOR_DOMCTL, addr_of_mut!(domctl) as c_ulong) + .await?; + Ok(()) + } } diff --git a/crates/xen/xencall/src/sys.rs b/crates/xen/xencall/src/sys.rs index 3022df4..cc0ee48 100644 --- a/crates/xen/xencall/src/sys.rs +++ b/crates/xen/xencall/src/sys.rs @@ -104,6 +104,7 @@ pub const XEN_DOMCTL_CDF_HAP: u32 = 1u32 << 1; pub const XEN_DOMCTL_CDF_S3_INTEGRITY: u32 = 1u32 << 2; pub const XEN_DOMCTL_CDF_OOS_OFF: u32 = 1u32 << 3; pub const XEN_DOMCTL_CDF_XS_DOMAIN: u32 = 1u32 << 4; +pub const XEN_DOMCTL_CDF_IOMMU: u32 = 1u32 << 5; pub const XEN_X86_EMU_LAPIC: u32 = 1 << 0; pub const XEN_X86_EMU_HPET: u32 = 1 << 1; @@ -237,6 +238,10 @@ pub union DomCtlValue { pub vcpu_context: DomCtlVcpuContext, pub address_size: AddressSize, pub get_page_frame_info: GetPageFrameInfo3, + pub ioport_permission: IoPortPermission, + pub iomem_permission: IoMemPermission, + pub irq_permission: IrqPermission, + pub assign_device: AssignDevice, pub pad: [u8; 128], } @@ -309,6 +314,30 @@ pub struct GetPageFrameInfo3 { pub array: c_ulong, } +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct IoPortPermission { + pub first_port: u32, + pub nr_ports: u32, + pub allow: u8, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct IoMemPermission { + pub first_mfn: u64, + pub nr_mfns: u64, + pub allow: u8, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct IrqPermission { + pub pirq: u32, + pub allow: u8, + pub pad: [u8; 3], +} + #[repr(C)] #[derive(Copy, Clone, Debug, Default)] #[cfg(target_arch = "x86_64")] @@ -378,7 +407,8 @@ pub struct MultiCallEntry { } pub const XEN_MEM_POPULATE_PHYSMAP: u32 = 6; -pub const XEN_MEM_MEMORY_MAP: u32 = 9; +pub const XEN_MEM_MEMORY_MAP: u32 = 10; +pub const XEN_MEM_SET_MEMORY_MAP: u32 = 13; pub const XEN_MEM_CLAIM_PAGES: u32 = 24; #[repr(C)] @@ -388,6 +418,13 @@ pub struct MemoryMap { pub buffer: c_ulong, } +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct ForeignMemoryMap { + pub domid: u16, + pub map: MemoryMap, +} + #[repr(C)] #[derive(Copy, Clone, Debug)] pub struct VcpuGuestContextFpuCtx { @@ -582,3 +619,60 @@ pub struct EvtChnAllocUnbound { pub remote_dom: u16, pub port: u32, } + +#[repr(C, packed)] +#[derive(Debug, Copy, Clone, Default)] +pub struct E820Entry { + pub addr: u64, + pub size: u64, + pub typ: u32, +} + +#[cfg(target_arch = "x86_64")] +pub const E820_MAX: u32 = 1024; +#[cfg(target_arch = "x86_64")] +pub const E820_RAM: u32 = 1; +#[cfg(target_arch = "x86_64")] +pub const E820_RESERVED: u32 = 2; +#[cfg(target_arch = "x86_64")] +pub const E820_ACPI: u32 = 3; +#[cfg(target_arch = "x86_64")] +pub const E820_NVS: u32 = 4; +#[cfg(target_arch = "x86_64")] +pub const E820_UNUSABLE: u32 = 5; + +pub const PHYSDEVOP_MAP_PIRQ: u64 = 13; + +#[repr(C)] +#[derive(Default, Clone, Copy, Debug)] +pub struct PhysdevMapPirq { + pub domid: u16, + pub typ: c_int, + pub index: c_int, + pub pirq: c_int, + pub bus: c_int, + pub devfn: c_int, + pub entry_nr: u16, + pub table_base: u64, +} + +pub const DOMCTL_DEV_RDM_RELAXED: u32 = 1; +pub const DOMCTL_DEV_PCI: u32 = 0; +pub const DOMCTL_DEV_DT: u32 = 1; + +#[repr(C)] +#[derive(Default, Clone, Copy, Debug)] +pub struct PciAssignDevice { + pub sbdf: u32, + pub padding: u64, +} + +#[repr(C)] +#[derive(Default, Clone, Copy, Debug)] +pub struct AssignDevice { + pub device: u32, + pub flags: u32, + pub pci_assign_device: PciAssignDevice, +} + +pub const DOMID_IO: u32 = 0x7FF1; diff --git a/crates/xen/xenclient/Cargo.toml b/crates/xen/xenclient/Cargo.toml index 9bed44d..bffd198 100644 --- a/crates/xen/xenclient/Cargo.toml +++ b/crates/xen/xenclient/Cargo.toml @@ -18,6 +18,7 @@ krata-xencall = { path = "../xencall", version = "^0.0.10" } krata-xenstore = { path = "../xenstore", version = "^0.0.10" } memchr = { workspace = true } nix = { workspace = true } +regex = { workspace = true } slice-copy = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } @@ -34,3 +35,7 @@ name = "xenclient" [[example]] name = "xenclient-boot" path = "examples/boot.rs" + +[[example]] +name = "xenclient-pci" +path = "examples/pci.rs" diff --git a/crates/xen/xenclient/examples/boot.rs b/crates/xen/xenclient/examples/boot.rs index ef5031a..ad35f03 100644 --- a/crates/xen/xenclient/examples/boot.rs +++ b/crates/xen/xenclient/examples/boot.rs @@ -27,6 +27,7 @@ async fn main() -> Result<()> { disks: vec![], channels: vec![], vifs: vec![], + pcis: vec![], filesystems: vec![], extra_keys: vec![], extra_rw_paths: vec![], diff --git a/crates/xen/xenclient/examples/pci.rs b/crates/xen/xenclient/examples/pci.rs new file mode 100644 index 0000000..19f3b4f --- /dev/null +++ b/crates/xen/xenclient/examples/pci.rs @@ -0,0 +1,32 @@ +use xenclient::pci::*; + +use xenclient::error::Result; + +#[tokio::main] +async fn main() -> Result<()> { + let backend = XenPciBackend::new(); + if !backend.is_loaded().await? { + return Err(xenclient::error::Error::GenericError( + "xen-pciback module not loaded".to_string(), + )); + } + + println!("assignable devices:"); + for device in backend.list_devices().await? { + let is_assigned = backend.is_assigned(&device).await?; + let has_slot = backend.has_slot(&device).await?; + println!("{} slot={} assigned={}", device, has_slot, is_assigned); + let resources = backend.read_resources(&device).await?; + for resource in resources { + println!( + " resource start={:#x} end={:#x} flags={:#x} bar-io={}", + resource.start, + resource.end, + resource.flags, + resource.is_bar_io() + ); + } + } + + Ok(()) +} diff --git a/crates/xen/xenclient/src/error.rs b/crates/xen/xenclient/src/error.rs index 78bfa8e..7f6a059 100644 --- a/crates/xen/xenclient/src/error.rs +++ b/crates/xen/xenclient/src/error.rs @@ -1,5 +1,7 @@ use std::io; +use crate::pci::PciBdf; + #[derive(thiserror::Error, Debug)] pub enum Error { #[error("io issue encountered: {0}")] @@ -34,6 +36,16 @@ pub enum Error { ElfInvalidImage, #[error("provided elf image does not contain xen support")] ElfXenSupportMissing, + #[error("regex error: {0}")] + RegexError(#[from] regex::Error), + #[error("error: {0}")] + GenericError(String), + #[error("failed to parse int: {0}")] + ParseIntError(#[from] std::num::ParseIntError), + #[error("invalid pci bdf string")] + InvalidPciBdfString, + #[error("pci device {0} is not assignable")] + PciDeviceNotAssignable(PciBdf), } pub type Result = std::result::Result; diff --git a/crates/xen/xenclient/src/lib.rs b/crates/xen/xenclient/src/lib.rs index 4b69876..218983d 100644 --- a/crates/xen/xenclient/src/lib.rs +++ b/crates/xen/xenclient/src/lib.rs @@ -21,18 +21,26 @@ use crate::elfloader::ElfImageLoader; use crate::error::{Error, Result}; use boot::BootState; use log::{debug, trace, warn}; +use pci::{PciBdf, XenPciBackend}; +use sys::XEN_PAGE_SHIFT; use tokio::time::timeout; +use std::collections::HashMap; use std::path::PathBuf; use std::str::FromStr; use std::time::Duration; use uuid::Uuid; -use xencall::sys::{CreateDomain, XEN_DOMCTL_CDF_HAP, XEN_DOMCTL_CDF_HVM_GUEST}; +use xencall::sys::{ + CreateDomain, DOMCTL_DEV_RDM_RELAXED, XEN_DOMCTL_CDF_HAP, XEN_DOMCTL_CDF_HVM_GUEST, + XEN_DOMCTL_CDF_IOMMU, +}; use xencall::XenCall; use xenstore::{ XsPermission, XsdClient, XsdInterface, XS_PERM_NONE, XS_PERM_READ, XS_PERM_READ_WRITE, }; +pub mod pci; + #[derive(Clone)] pub struct XenClient { pub store: XsdClient, @@ -78,6 +86,33 @@ pub struct DomainEventChannel { pub name: String, } +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub enum DomainPciRdmReservePolicy { + Invalid, + #[default] + Strict, + Relaxed, +} + +impl DomainPciRdmReservePolicy { + pub fn to_option_str(&self) -> &str { + match self { + DomainPciRdmReservePolicy::Invalid => "-1", + DomainPciRdmReservePolicy::Strict => "0", + DomainPciRdmReservePolicy::Relaxed => "1", + } + } +} + +#[derive(Clone, Debug)] +pub struct DomainPciDevice { + pub bdf: PciBdf, + pub permissive: bool, + pub msi_translate: bool, + pub power_management: bool, + pub rdm_reserve_policy: DomainPciRdmReservePolicy, +} + #[derive(Clone, Debug)] pub struct DomainConfig { pub backend_domid: u32, @@ -93,6 +128,7 @@ pub struct DomainConfig { pub vifs: Vec, pub filesystems: Vec, pub event_channels: Vec, + pub pcis: Vec, pub extra_keys: Vec<(String, String)>, pub extra_rw_paths: Vec, } @@ -118,12 +154,14 @@ impl XenClient { pub async fn create(&self, config: &DomainConfig) -> Result { let mut domain = CreateDomain { - max_vcpus: config.max_vcpus, ..Default::default() }; + domain.max_vcpus = config.max_vcpus; if cfg!(target_arch = "aarch64") { domain.flags = XEN_DOMCTL_CDF_HVM_GUEST | XEN_DOMCTL_CDF_HAP; + } else { + domain.flags = XEN_DOMCTL_CDF_IOMMU; } let domid = self.call.create_domain(domain).await?; @@ -411,6 +449,19 @@ impl XenClient { .await?; } + for (index, pci) in config.pcis.iter().enumerate() { + self.pci_device_add( + &dom_path, + &backend_dom_path, + config.backend_domid, + domid, + index, + config.pcis.len(), + pci, + ) + .await?; + } + for channel in &config.event_channels { let id = self .call @@ -645,6 +696,129 @@ impl XenClient { Ok(()) } + #[allow(clippy::too_many_arguments)] + async fn pci_device_add( + &self, + dom_path: &str, + backend_dom_path: &str, + backend_domid: u32, + domid: u32, + index: usize, + device_count: usize, + device: &DomainPciDevice, + ) -> Result<()> { + let backend = XenPciBackend::new(); + if !backend.is_assigned(&device.bdf).await? { + return Err(Error::PciDeviceNotAssignable(device.bdf)); + } + let resources = backend.read_resources(&device.bdf).await?; + for resource in resources { + if resource.is_bar_io() { + self.call + .ioport_permission(domid, resource.start as u32, resource.size() as u32, true) + .await?; + } else { + self.call + .iomem_permission( + domid, + resource.start >> XEN_PAGE_SHIFT, + (resource.size() + (XEN_PAGE_SHIFT - 1)) >> XEN_PAGE_SHIFT, + true, + ) + .await?; + } + } + + // backend.reset(&device.bdf).await?; + + self.call + .assign_device( + domid, + device.bdf.encode(), + if device.rdm_reserve_policy == DomainPciRdmReservePolicy::Relaxed { + DOMCTL_DEV_RDM_RELAXED + } else { + 0 + }, + ) + .await?; + + let id = 60; + + if index == 0 { + let backend_items: Vec<(&str, String)> = vec![ + ("frontend-id", domid.to_string()), + ("online", "1".to_string()), + ("state", "1".to_string()), + ("num_devs", device_count.to_string()), + ]; + + let frontend_items: Vec<(&str, String)> = vec![ + ("backend-id", backend_domid.to_string()), + ("state", "1".to_string()), + ]; + + self.device_add( + "pci", + id, + dom_path, + backend_dom_path, + backend_domid, + domid, + frontend_items, + backend_items, + ) + .await?; + } + + let backend_path = format!("{}/backend/{}/{}/{}", backend_dom_path, "pci", domid, id); + + let transaction = self.store.transaction().await?; + + transaction + .write_string( + format!("{}/key-{}", backend_path, index), + &device.bdf.to_string(), + ) + .await?; + transaction + .write_string( + format!("{}/dev-{}", backend_path, index), + &device.bdf.to_string(), + ) + .await?; + + if let Some(vdefn) = device.bdf.vdefn { + transaction + .write_string( + format!("{}/vdefn-{}", backend_path, index), + &format!("{:#x}", vdefn), + ) + .await?; + } + + let mut options = HashMap::new(); + options.insert("permissive", if device.permissive { "1" } else { "0" }); + options.insert("rdm_policy", device.rdm_reserve_policy.to_option_str()); + options.insert("msitranslate", if device.msi_translate { "1" } else { "0" }); + options.insert( + "power_mgmt", + if device.power_management { "1" } else { "0" }, + ); + let options = options + .into_iter() + .map(|(key, value)| format!("{}={}", key, value)) + .collect::>() + .join(","); + + transaction + .write_string(format!("{}/opts-{}", backend_path, index), &options) + .await?; + + transaction.commit().await?; + Ok(()) + } + #[allow(clippy::too_many_arguments)] async fn device_add( &self, @@ -809,21 +983,4 @@ impl XenClient { tx.commit().await?; Ok(()) } - - pub async fn get_console_path(&self, domid: u32) -> Result { - let dom_path = self.store.get_domain_path(domid).await?; - let console_tty_path = format!("{}/console/tty", dom_path); - let mut tty: Option = None; - for _ in 0..5 { - tty = self.store.read_string(&console_tty_path).await?; - if tty.is_some() { - break; - } - tokio::time::sleep(Duration::from_millis(200)).await; - } - let Some(tty) = tty else { - return Err(Error::TtyNotFound); - }; - Ok(tty) - } } diff --git a/crates/xen/xenclient/src/pci.rs b/crates/xen/xenclient/src/pci.rs new file mode 100644 index 0000000..6482bf8 --- /dev/null +++ b/crates/xen/xenclient/src/pci.rs @@ -0,0 +1,305 @@ +use regex::Regex; +use std::{fmt::Display, path::PathBuf, str::FromStr}; +use tokio::fs; + +use crate::error::{Error, Result}; + +const PCIBACK_SYSFS_PATH: &str = "/sys/bus/pci/drivers/pciback"; +const PCI_BDF_REGEX: &str = r"^([0-9a-f]{4}):([0-9a-f]{2}):([0-9a-f]{2}).([0-9a-f]{1})$"; +const PCI_BDF_SHORT_REGEX: &str = r"^([0-9a-f]{2}):([0-9a-f]{2}).([0-9a-f]{1})$"; +const PCI_BDF_VDEFN_REGEX: &str = + r"^([0-9a-f]{4}):([0-9a-f]{2}):([0-9a-f]{2}).([0-9a-f]{1})@([0-9a-f]{2})$"; +const FLAG_PCI_BAR_IO: u64 = 0x1; + +#[derive(Clone)] +pub struct XenPciBackend { + path: PathBuf, +} + +impl Default for XenPciBackend { + fn default() -> Self { + Self::new() + } +} + +impl XenPciBackend { + pub fn new() -> Self { + Self { + path: PathBuf::from(PCIBACK_SYSFS_PATH), + } + } + + pub async fn is_loaded(&self) -> Result { + Ok(fs::try_exists(&self.path).await?) + } + + pub async fn list_devices(&self) -> Result> { + let mut devices = Vec::new(); + let mut dir = fs::read_dir(&self.path).await?; + while let Some(entry) = dir.next_entry().await? { + let file_name_string = entry.file_name().to_string_lossy().to_string(); + let Some(bdf) = PciBdf::from_str(&file_name_string).ok() else { + continue; + }; + devices.push(bdf); + } + Ok(devices) + } + + pub async fn is_assigned(&self, bdf: &PciBdf) -> Result { + let mut path = self.path.clone(); + path.push(bdf.to_string()); + Ok(fs::try_exists(path).await?) + } + + pub async fn read_irq(&self, bdf: &PciBdf) -> Result> { + let mut path: PathBuf = self.path.clone(); + path.push(bdf.to_string()); + path.push("irq"); + + if !path.exists() { + return Ok(None); + } + + let content = fs::read_to_string(&path).await?; + Ok(u32::from_str(content.trim()).ok()) + } + + pub async fn read_resources(&self, bdf: &PciBdf) -> Result> { + let mut resources = Vec::new(); + let mut path: PathBuf = self.path.clone(); + path.push(bdf.to_string()); + path.push("resource"); + let content = fs::read_to_string(&path).await?; + for line in content.lines() { + let parts = line.split(' ').collect::>(); + if parts.len() != 3 { + continue; + } + let Some(start) = parts.first() else { + continue; + }; + + let Some(end) = parts.get(1) else { + continue; + }; + + let Some(flags) = parts.get(2) else { + continue; + }; + + if !start.starts_with("0x") || !end.starts_with("0x") || !flags.starts_with("0x") { + continue; + } + + let start = &start[2..]; + let end = &end[2..]; + let flags = &flags[2..]; + let Some(start) = u64::from_str_radix(start, 16).ok() else { + continue; + }; + let Some(end) = u64::from_str_radix(end, 16).ok() else { + continue; + }; + let Some(flags) = u64::from_str_radix(flags, 16).ok() else { + continue; + }; + + if start > 0 { + resources.push(PciMemoryResource::new(start, end, flags)); + } + } + Ok(resources) + } + + pub async fn has_slot(&self, bdf: &PciBdf) -> Result { + let mut slots_path = self.path.clone(); + slots_path.push("slots"); + let content = fs::read_to_string(&slots_path).await?; + for line in content.lines() { + if let Ok(slot) = PciBdf::from_str(line) { + if slot == *bdf { + return Ok(true); + } + } + } + Ok(false) + } + + pub async fn reset(&self, bdf: &PciBdf) -> Result<()> { + let mut path: PathBuf = self.path.clone(); + path.push("do_flr"); + fs::write(&path, bdf.to_string()).await?; + Ok(()) + } +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] +pub struct PciBdf { + pub domain: Option, + pub bus: u16, + pub device: u16, + pub function: u16, + pub vdefn: Option, +} + +impl PciBdf { + pub fn new( + domain: Option, + bus: u16, + device: u16, + function: u16, + vdefn: Option, + ) -> Self { + Self { + domain, + bus, + device, + function, + vdefn, + } + } + + pub fn with_domain(&self, domain: u32) -> PciBdf { + PciBdf { + domain: Some(domain), + bus: self.bus, + device: self.device, + function: self.function, + vdefn: self.vdefn, + } + } + + pub fn encode(&self) -> u32 { + let mut value = self.domain.unwrap_or(0) << 16u32; + value |= ((self.bus & 0xff) << 8u32) as u32; + value |= ((self.device & 0x1f) << 3u32) as u32; + value |= (self.function & 0x7) as u32; + value + } +} + +impl FromStr for PciBdf { + type Err = Error; + + fn from_str(s: &str) -> Result { + let pci_bdf_regex = Regex::from_str(PCI_BDF_REGEX)?; + let pci_bdf_vdefn_regex = Regex::from_str(PCI_BDF_VDEFN_REGEX)?; + let pci_bdf_short_regex = Regex::from_str(PCI_BDF_SHORT_REGEX)?; + + if let Some(pci_bdf_captures) = pci_bdf_regex.captures(s) { + let domain = pci_bdf_captures + .get(1) + .ok_or_else(|| Error::GenericError("capture group 1 did not exist".to_string()))?; + let bus = pci_bdf_captures + .get(2) + .ok_or_else(|| Error::GenericError("capture group 2 did not exist".to_string()))?; + let device = pci_bdf_captures + .get(3) + .ok_or_else(|| Error::GenericError("capture group 3 did not exist".to_string()))?; + let function = pci_bdf_captures + .get(4) + .ok_or_else(|| Error::GenericError("capture group 4 did not exist".to_string()))?; + + let domain = u32::from_str_radix(domain.as_str(), 16)?; + let bus = u16::from_str_radix(bus.as_str(), 16)?; + let device = u16::from_str_radix(device.as_str(), 16)?; + let function = u16::from_str_radix(function.as_str(), 16)?; + + Ok(PciBdf::new(Some(domain), bus, device, function, None)) + } else if let Some(pci_bdf_vdefn_captures) = pci_bdf_vdefn_regex.captures(s) { + let domain = pci_bdf_vdefn_captures + .get(1) + .ok_or_else(|| Error::GenericError("capture group 1 did not exist".to_string()))?; + let bus = pci_bdf_vdefn_captures + .get(2) + .ok_or_else(|| Error::GenericError("capture group 2 did not exist".to_string()))?; + let device = pci_bdf_vdefn_captures + .get(3) + .ok_or_else(|| Error::GenericError("capture group 3 did not exist".to_string()))?; + let function = pci_bdf_vdefn_captures + .get(4) + .ok_or_else(|| Error::GenericError("capture group 4 did not exist".to_string()))?; + let vdefn = pci_bdf_vdefn_captures + .get(5) + .ok_or_else(|| Error::GenericError("capture group 5 did not exist".to_string()))?; + + let domain = u32::from_str_radix(domain.as_str(), 16)?; + let bus = u16::from_str_radix(bus.as_str(), 16)?; + let device = u16::from_str_radix(device.as_str(), 16)?; + let function = u16::from_str_radix(function.as_str(), 16)?; + let vdefn = u16::from_str_radix(vdefn.as_str(), 16)?; + Ok(PciBdf::new( + Some(domain), + bus, + device, + function, + Some(vdefn), + )) + } else if let Some(pci_bdf_short_captures) = pci_bdf_short_regex.captures(s) { + let bus = pci_bdf_short_captures + .get(1) + .ok_or_else(|| Error::GenericError("capture group 1 did not exist".to_string()))?; + let device = pci_bdf_short_captures + .get(2) + .ok_or_else(|| Error::GenericError("capture group 2 did not exist".to_string()))?; + let function = pci_bdf_short_captures + .get(3) + .ok_or_else(|| Error::GenericError("capture group 3 did not exist".to_string()))?; + + let bus = u16::from_str_radix(bus.as_str(), 16)?; + let device = u16::from_str_radix(device.as_str(), 16)?; + let function = u16::from_str_radix(function.as_str(), 16)?; + Ok(PciBdf::new(None, bus, device, function, None)) + } else { + Err(Error::InvalidPciBdfString) + } + } +} + +impl Display for PciBdf { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if let Some(domain) = self.domain { + if let Some(vdefn) = self.vdefn { + write!( + f, + "{:04x}:{:02x}:{:02x}.{:01x}@{:02x}", + domain, self.bus, self.device, self.function, vdefn + ) + } else { + write!( + f, + "{:04x}:{:02x}:{:02x}.{:01x}", + domain, self.bus, self.device, self.function + ) + } + } else { + write!( + f, + "{:02x}:{:02x}.{:01x}", + self.bus, self.device, self.function + ) + } + } +} + +#[derive(Debug, Clone, Copy)] +pub struct PciMemoryResource { + pub start: u64, + pub end: u64, + pub flags: u64, +} + +impl PciMemoryResource { + pub fn new(start: u64, end: u64, flags: u64) -> PciMemoryResource { + PciMemoryResource { start, end, flags } + } + + pub fn is_bar_io(&self) -> bool { + (self.flags & FLAG_PCI_BAR_IO) != 0 + } + + pub fn size(&self) -> u64 { + (self.end - self.start) + 1 + } +} diff --git a/crates/xen/xenclient/src/x86.rs b/crates/xen/xenclient/src/x86.rs index 0a4999f..bd84104 100644 --- a/crates/xen/xenclient/src/x86.rs +++ b/crates/xen/xenclient/src/x86.rs @@ -11,7 +11,9 @@ use slice_copy::copy; use std::cmp::{max, min}; use std::mem::size_of; use std::slice; -use xencall::sys::{VcpuGuestContext, MMUEXT_PIN_L4_TABLE}; +use xencall::sys::{ + E820Entry, VcpuGuestContext, E820_MAX, E820_RAM, E820_UNUSABLE, MMUEXT_PIN_L4_TABLE, +}; pub const X86_PAGE_SHIFT: u64 = 12; pub const X86_PAGE_SIZE: u64 = 1 << X86_PAGE_SHIFT; @@ -273,6 +275,154 @@ impl X86BootSetup { self.table.mappings[m] = map; Ok(m) } + + fn e820_sanitize( + &self, + mut source: Vec, + map_limit_kb: u64, + balloon_kb: u64, + ) -> Result> { + let mut e820 = vec![E820Entry::default(); E820_MAX as usize]; + + for entry in &mut source { + if entry.addr > 0x100000 { + continue; + } + + // entries under 1MB should be removed. + entry.typ = 0; + entry.size = 0; + entry.addr = u64::MAX; + } + + let mut lowest = u64::MAX; + let mut highest = 0; + + for entry in &source { + if entry.typ == E820_RAM || entry.typ == E820_UNUSABLE || entry.typ == 0 { + continue; + } + + lowest = if entry.addr < lowest { + entry.addr + } else { + lowest + }; + + highest = if entry.addr + entry.size > highest { + entry.addr + entry.size + } else { + highest + } + } + + let start_kb = if lowest > 1024 { lowest >> 10 } else { 0 }; + + let mut idx: usize = 0; + + e820[idx].addr = 0; + e820[idx].size = map_limit_kb << 10; + e820[idx].typ = E820_RAM; + + let mut delta_kb = 0u64; + + if start_kb > 0 && map_limit_kb > start_kb { + delta_kb = map_limit_kb - start_kb; + if delta_kb > 0 { + e820[idx].size -= delta_kb << 10; + } + } + + let ram_end = source[0].addr + source[0].size; + idx += 1; + + for src in &mut source { + let end = src.addr + src.size; + if src.typ == E820_UNUSABLE || end < ram_end { + src.typ = 0; + continue; + } + + if src.typ != E820_RAM { + continue; + } + + if src.addr >= (1 << 32) { + continue; + } + + if src.addr < ram_end { + let delta = ram_end - src.addr; + src.typ = E820_UNUSABLE; + + if src.size < delta { + src.typ = 0; + } else { + src.size -= delta; + src.addr = ram_end; + } + + if src.addr + src.size != end { + src.typ = 0; + } + } + + if end > ram_end { + src.typ = E820_UNUSABLE; + } + } + + if lowest > ram_end { + let mut add_unusable = true; + + for src in &mut source { + if !add_unusable { + break; + } + + if src.typ != E820_UNUSABLE { + continue; + } + + if ram_end != src.addr { + continue; + } + + if lowest != src.addr + src.size { + src.size = lowest - src.addr; + } + add_unusable = false; + } + + if add_unusable { + e820[1].typ = E820_UNUSABLE; + e820[1].addr = ram_end; + e820[1].size = lowest - ram_end; + } + } + + for src in &source { + if src.typ == E820_RAM || src.typ == 0 { + continue; + } + + e820[idx].typ = src.typ; + e820[idx].addr = src.addr; + e820[idx].size = src.size; + idx += 1; + } + + if balloon_kb > 0 || delta_kb > 0 { + e820[idx].typ = E820_RAM; + e820[idx].addr = if (1u64 << 32u64) > highest { + 1u64 << 32u64 + } else { + highest + }; + e820[idx].size = (delta_kb << 10) + (balloon_kb << 10); + } + Ok(e820) + } } #[async_trait::async_trait] @@ -615,6 +765,13 @@ impl ArchBootSetup for X86BootSetup { let pg_mfn = setup.phys.p2m[pg_pfn as usize]; setup.phys.unmap(pg_pfn)?; setup.phys.unmap(p2m_segment.pfn)?; + + let map = setup.call.get_memory_map(E820_MAX).await?; + let mem_mb = setup.total_pages >> (20 - self.page_shift()); + let mem_kb = mem_mb * 1024; + let e820 = self.e820_sanitize(map, mem_kb, 0)?; + setup.call.set_memory_map(setup.domid, e820).await?; + setup .call .mmuext(setup.domid, MMUEXT_PIN_L4_TABLE, pg_mfn, 0) diff --git a/hack/dist/bundle.sh b/hack/dist/bundle.sh index b9b3b75..fd33755 100755 --- a/hack/dist/bundle.sh +++ b/hack/dist/bundle.sh @@ -33,6 +33,7 @@ cd "${BUNDLE_DIR}" cp "${KRATA_DIR}/target/initrd/initrd-${TARGET_ARCH}" initrd cp "${KRATA_DIR}/target/kernel/kernel-${TARGET_ARCH}" kernel +cp "${KRATA_DIR}/target/kernel/addons-${TARGET_ARCH}.squashfs" addons.squashfs cp "${KRATA_DIR}/resources/systemd/kratad.service" kratad.service cp "${KRATA_DIR}/resources/systemd/kratanet.service" kratanet.service cp "${KRATA_DIR}/resources/bundle/install.sh" install.sh diff --git a/hack/dist/systar.sh b/hack/dist/systar.sh index 22337d3..eb83be6 100755 --- a/hack/dist/systar.sh +++ b/hack/dist/systar.sh @@ -40,6 +40,7 @@ fi mkdir -p usr/share/krata/guest mv ../krata/kernel ../krata/initrd usr/share/krata/guest +mv ../krata/addons.squashfs usr/share/krata/guest/addons.squashfs tar czf "${SYSTAR}" --owner 0 --group 0 . diff --git a/hack/kernel/build.sh b/hack/kernel/build.sh index 48d127d..326028d 100755 --- a/hack/kernel/build.sh +++ b/hack/kernel/build.sh @@ -3,7 +3,7 @@ set -e REAL_SCRIPT="$(realpath "${0}")" cd "$(dirname "${REAL_SCRIPT}")/../.." -KRATA_DIR="${PWD}" +KRATA_DIR="$(realpath "${PWD}")" KERNEL_DIR="${KRATA_DIR}/kernel" cd "${KRATA_DIR}" @@ -62,7 +62,26 @@ then IMAGE_TARGET="Image.gz" fi -make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH_KERNEL}" -j"${KRATA_KERNEL_BUILD_JOBS}" "${CROSS_COMPILE_MAKE}" "${IMAGE_TARGET}" +make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH_KERNEL}" -j"${KRATA_KERNEL_BUILD_JOBS}" "${CROSS_COMPILE_MAKE}" "${IMAGE_TARGET}" modules + +MODULES_INSTALL_PATH="${OUTPUT_DIR}/modules-install-${TARGET_ARCH_STANDARD}" +ADDONS_OUTPUT_PATH="${OUTPUT_DIR}/addons-${TARGET_ARCH_STANDARD}" +MODULES_OUTPUT_PATH="${ADDONS_OUTPUT_PATH}/modules" +ADDONS_SQUASHFS_PATH="${OUTPUT_DIR}/addons-${TARGET_ARCH_STANDARD}.squashfs" + +rm -rf "${MODULES_INSTALL_PATH}" +rm -rf "${ADDONS_OUTPUT_PATH}" +rm -rf "${ADDONS_SQUASHFS_PATH}" + +make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH_KERNEL}" -j"${KRATA_KERNEL_BUILD_JOBS}" "${CROSS_COMPILE_MAKE}" INSTALL_MOD_PATH="${MODULES_INSTALL_PATH}" modules_install +KERNEL_MODULES_VER="$(ls "${MODULES_INSTALL_PATH}/lib/modules")" + +mkdir -p "${ADDONS_OUTPUT_PATH}" +mv "${MODULES_INSTALL_PATH}/lib/modules/${KERNEL_MODULES_VER}" "${MODULES_OUTPUT_PATH}" +rm -rf "${MODULES_INSTALL_PATH}" +[ -L "${MODULES_OUTPUT_PATH}/build" ] && unlink "${MODULES_OUTPUT_PATH}/build" + +mksquashfs "${ADDONS_OUTPUT_PATH}" "${ADDONS_SQUASHFS_PATH}" -all-root if [ "${TARGET_ARCH_STANDARD}" = "x86_64" ] then diff --git a/kernel/krata-x86_64.config b/kernel/krata-x86_64.config index d413ade..970825c 100644 --- a/kernel/krata-x86_64.config +++ b/kernel/krata-x86_64.config @@ -18,7 +18,7 @@ CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y -CONFIG_PAHOLE_VERSION=124 +CONFIG_PAHOLE_VERSION=0 CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y @@ -169,8 +169,7 @@ CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_LAZY is not set # end of RCU Subsystem -CONFIG_IKCONFIG=m -CONFIG_IKCONFIG_PROC=y +# CONFIG_IKCONFIG is not set # CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 @@ -224,7 +223,7 @@ CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_SCHED_AUTOGROUP=y -# CONFIG_RELAY is not set +CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_RD_GZIP=y @@ -342,7 +341,8 @@ CONFIG_X86_X2APIC=y # CONFIG_X86_EXTENDED_PLATFORM is not set # CONFIG_X86_INTEL_LPSS is not set # CONFIG_X86_AMD_PLATFORM_DEVICE is not set -# CONFIG_IOSF_MBI is not set +CONFIG_IOSF_MBI=m +# CONFIG_IOSF_MBI_DEBUG is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_HYPERVISOR_GUEST=y CONFIG_PARAVIRT=y @@ -427,8 +427,8 @@ CONFIG_X86_VSYSCALL_EMULATION=y CONFIG_X86_IOPL_IOPERM=y CONFIG_MICROCODE=y # CONFIG_MICROCODE_LATE_LOADING is not set -CONFIG_X86_MSR=m -CONFIG_X86_CPUID=m +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set # CONFIG_X86_5LEVEL is not set CONFIG_X86_DIRECT_GBPAGES=y # CONFIG_X86_CPA_STATISTICS is not set @@ -456,7 +456,6 @@ CONFIG_X86_INTEL_TSX_MODE_OFF=y # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set # CONFIG_X86_SGX is not set # CONFIG_X86_USER_SHADOW_STACK is not set -# CONFIG_INTEL_TDX_HOST is not set CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_HANDOVER_PROTOCOL=y @@ -550,12 +549,12 @@ CONFIG_ACPI_LPIT=y CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set CONFIG_ACPI_EC_DEBUGFS=y -CONFIG_ACPI_AC=m -CONFIG_ACPI_BATTERY=m +# CONFIG_ACPI_AC is not set +# CONFIG_ACPI_BATTERY is not set CONFIG_ACPI_BUTTON=m -CONFIG_ACPI_TINY_POWER_BUTTON=m -CONFIG_ACPI_TINY_POWER_BUTTON_SIGNAL=38 -CONFIG_ACPI_FAN=m +# CONFIG_ACPI_TINY_POWER_BUTTON is not set +CONFIG_ACPI_VIDEO=m +# CONFIG_ACPI_FAN is not set # CONFIG_ACPI_TAD is not set # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_CPU_FREQ_PSS=y @@ -564,8 +563,8 @@ CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_CPPC_LIB=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y -CONFIG_ACPI_PROCESSOR_AGGREGATOR=m -CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +# CONFIG_ACPI_THERMAL is not set CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y # CONFIG_ACPI_TABLE_UPGRADE is not set # CONFIG_ACPI_DEBUG is not set @@ -573,13 +572,12 @@ CONFIG_ACPI_PCI_SLOT=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HOTPLUG_MEMORY=y CONFIG_ACPI_HOTPLUG_IOAPIC=y -CONFIG_ACPI_SBS=m -CONFIG_ACPI_HED=m +# CONFIG_ACPI_SBS is not set +# CONFIG_ACPI_HED is not set # CONFIG_ACPI_CUSTOM_METHOD is not set CONFIG_ACPI_BGRT=y # CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set -CONFIG_ACPI_NFIT=m -# CONFIG_NFIT_SECURITY_DEBUG is not set +# CONFIG_ACPI_NFIT is not set CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_ACPI_APEI=y @@ -592,7 +590,6 @@ CONFIG_ACPI_APEI_ERST_DEBUG=y CONFIG_ACPI_PCC=y # CONFIG_ACPI_FFH is not set # CONFIG_PMIC_OPREGION is not set -CONFIG_ACPI_VIOT=y # CONFIG_ACPI_PRMT is not set CONFIG_X86_PM_TIMER=y @@ -669,36 +666,8 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y # end of Binary Emulations CONFIG_HAVE_KVM=y -CONFIG_HAVE_KVM_PFNCACHE=y -CONFIG_HAVE_KVM_IRQCHIP=y -CONFIG_HAVE_KVM_IRQFD=y -CONFIG_HAVE_KVM_IRQ_ROUTING=y -CONFIG_HAVE_KVM_DIRTY_RING=y -CONFIG_HAVE_KVM_DIRTY_RING_TSO=y -CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y -CONFIG_HAVE_KVM_EVENTFD=y -CONFIG_KVM_MMIO=y -CONFIG_KVM_ASYNC_PF=y -CONFIG_HAVE_KVM_MSI=y -CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y -CONFIG_KVM_VFIO=y -CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y -CONFIG_KVM_COMPAT=y -CONFIG_HAVE_KVM_IRQ_BYPASS=y -CONFIG_HAVE_KVM_NO_POLL=y -CONFIG_KVM_XFER_TO_GUEST_WORK=y -CONFIG_HAVE_KVM_PM_NOTIFIER=y -CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_VIRTUALIZATION=y -CONFIG_KVM=m -CONFIG_KVM_WERROR=y -CONFIG_KVM_INTEL=m -CONFIG_KVM_AMD=m -CONFIG_KVM_AMD_SEV=y -CONFIG_KVM_SMM=y -# CONFIG_KVM_XEN is not set -# CONFIG_KVM_PROVE_MMU is not set -CONFIG_KVM_MAX_NR_VCPUS=1024 +# CONFIG_KVM is not set CONFIG_AS_AVX512=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y @@ -726,7 +695,6 @@ CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_KRETPROBES=y CONFIG_KRETPROBE_ON_RETHOOK=y -CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y @@ -884,11 +852,10 @@ CONFIG_MODULE_SIG_SHA256=y # CONFIG_MODULE_SIG_SHA3_384 is not set # CONFIG_MODULE_SIG_SHA3_512 is not set CONFIG_MODULE_SIG_HASH="sha256" -# CONFIG_MODULE_COMPRESS_NONE is not set -CONFIG_MODULE_COMPRESS_GZIP=y +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set # CONFIG_MODULE_COMPRESS_XZ is not set # CONFIG_MODULE_COMPRESS_ZSTD is not set -# CONFIG_MODULE_DECOMPRESS is not set # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set @@ -896,12 +863,10 @@ CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_BLOCK_LEGACY_AUTOLOAD=y CONFIG_BLK_CGROUP_RWSTAT=y -CONFIG_BLK_CGROUP_PUNT_BIO=y CONFIG_BLK_DEV_BSG_COMMON=y CONFIG_BLK_ICQ=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y -CONFIG_BLK_DEV_INTEGRITY_T10=m # CONFIG_BLK_DEV_ZONED is not set CONFIG_BLK_DEV_THROTTLING=y # CONFIG_BLK_DEV_THROTTLING_LOW is not set @@ -942,7 +907,6 @@ CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y CONFIG_BLK_PM=y CONFIG_BLOCK_HOLDER_DEPRECATED=y -CONFIG_BLK_MQ_STACKING=y # # IO Schedulers @@ -954,8 +918,6 @@ CONFIG_BFQ_GROUP_IOSCHED=y # CONFIG_BFQ_CGROUP_DEBUG is not set # end of IO Schedulers -CONFIG_PREEMPT_NOTIFIERS=y -CONFIG_PADATA=y CONFIG_ASN1=y CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y @@ -979,7 +941,7 @@ CONFIG_COMPAT_BINFMT_ELF=y CONFIG_ELFCORE=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_SCRIPT=y -CONFIG_BINFMT_MISC=m +# CONFIG_BINFMT_MISC is not set CONFIG_COREDUMP=y # end of Executable file formats @@ -1043,8 +1005,6 @@ CONFIG_MHP_MEMMAP_ON_MEMORY=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -CONFIG_MEMORY_BALLOON=y -CONFIG_BALLOON_COMPACTION=y CONFIG_COMPACTION=y CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_PAGE_REPORTING=y @@ -1079,12 +1039,12 @@ CONFIG_ARCH_HAS_ZONE_DMA_SET=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA32=y # CONFIG_ZONE_DEVICE is not set +CONFIG_VMAP_PFN=y CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set # CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y -CONFIG_MAPPING_DIRTY_HELPERS=y CONFIG_MEMFD_CREATE=y CONFIG_SECRETMEM=y # CONFIG_ANON_VMA_NAME is not set @@ -1107,37 +1067,21 @@ CONFIG_NET=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y CONFIG_NET_XGRESS=y -CONFIG_NET_REDIRECT=y -CONFIG_SKB_EXTENSIONS=y # # Networking options # CONFIG_PACKET=y -CONFIG_PACKET_DIAG=m +# CONFIG_PACKET_DIAG is not set CONFIG_UNIX=y CONFIG_UNIX_SCM=y CONFIG_AF_UNIX_OOB=y -CONFIG_UNIX_DIAG=m -CONFIG_TLS=m -# CONFIG_TLS_DEVICE is not set -# CONFIG_TLS_TOE is not set -CONFIG_XFRM=y -CONFIG_XFRM_ALGO=m -CONFIG_XFRM_USER=m -# CONFIG_XFRM_USER_COMPAT is not set -CONFIG_XFRM_INTERFACE=m -CONFIG_XFRM_SUB_POLICY=y -CONFIG_XFRM_MIGRATE=y -CONFIG_XFRM_STATISTICS=y -CONFIG_XFRM_AH=m -CONFIG_XFRM_ESP=m -CONFIG_XFRM_IPCOMP=m -CONFIG_NET_KEY=m -CONFIG_NET_KEY_MIGRATE=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set CONFIG_XDP_SOCKETS=y # CONFIG_XDP_SOCKETS_DIAG is not set -CONFIG_NET_HANDSHAKE=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -1145,56 +1089,43 @@ CONFIG_IP_ADVANCED_ROUTER=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y -CONFIG_NET_IPIP=m +# CONFIG_NET_IPIP is not set CONFIG_NET_IPGRE_DEMUX=y -CONFIG_NET_IP_TUNNEL=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y +# CONFIG_NET_IPGRE is not set CONFIG_IP_MROUTE_COMMON=y CONFIG_IP_MROUTE=y CONFIG_IP_MROUTE_MULTIPLE_TABLES=y # CONFIG_IP_PIMSM_V1 is not set CONFIG_IP_PIMSM_V2=y CONFIG_SYN_COOKIES=y -CONFIG_NET_IPVTI=m -CONFIG_NET_UDP_TUNNEL=m -CONFIG_NET_FOU=m -CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -# CONFIG_INET_ESP_OFFLOAD is not set -# CONFIG_INET_ESPINTCP is not set -CONFIG_INET_IPCOMP=m +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set CONFIG_INET_TABLE_PERTURB_ORDER=16 -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m -CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m -CONFIG_INET_UDP_DIAG=m -# CONFIG_INET_RAW_DIAG is not set -CONFIG_INET_DIAG_DESTROY=y +# CONFIG_INET_DIAG is not set CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m +# CONFIG_TCP_CONG_BIC is not set CONFIG_TCP_CONG_CUBIC=y -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_VEGAS=m -CONFIG_TCP_CONG_NV=m -CONFIG_TCP_CONG_SCALABLE=m -CONFIG_TCP_CONG_LP=m -CONFIG_TCP_CONG_VENO=m -CONFIG_TCP_CONG_YEAH=m -CONFIG_TCP_CONG_ILLINOIS=m -CONFIG_TCP_CONG_DCTCP=m -CONFIG_TCP_CONG_CDG=m -CONFIG_TCP_CONG_BBR=m +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_HTCP is not set +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_NV is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +# CONFIG_TCP_CONG_DCTCP is not set +# CONFIG_TCP_CONG_CDG is not set +# CONFIG_TCP_CONG_BBR is not set CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" @@ -1205,23 +1136,15 @@ CONFIG_IPV6=y CONFIG_IPV6_ROUTER_PREF=y CONFIG_IPV6_ROUTE_INFO=y # CONFIG_IPV6_OPTIMISTIC_DAD is not set -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -# CONFIG_INET6_ESP_OFFLOAD is not set -# CONFIG_INET6_ESPINTCP is not set -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_ILA=m -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m -CONFIG_IPV6_VTI=m -CONFIG_IPV6_SIT=m -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_NDISC_NODETYPE=y -CONFIG_IPV6_TUNNEL=m -CONFIG_IPV6_GRE=m -CONFIG_IPV6_FOU=m -CONFIG_IPV6_FOU_TUNNEL=m +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_IPV6_SUBTREES=y CONFIG_IPV6_MROUTE=y @@ -1247,383 +1170,68 @@ CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_EGRESS=y CONFIG_NETFILTER_SKIP_EGRESS=y CONFIG_NETFILTER_NETLINK=y -CONFIG_NETFILTER_FAMILY_BRIDGE=y -CONFIG_NETFILTER_FAMILY_ARP=y CONFIG_NETFILTER_BPF_LINK=y -# CONFIG_NETFILTER_NETLINK_HOOK is not set -CONFIG_NETFILTER_NETLINK_ACCT=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NETFILTER_NETLINK_OSF=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_SYSLOG=m -CONFIG_NETFILTER_CONNCOUNT=m -CONFIG_NF_CONNTRACK_MARK=y -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_ZONES=y -# CONFIG_NF_CONNTRACK_PROCFS is not set -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_LABELS=y -CONFIG_NF_CONNTRACK_OVS=y -CONFIG_NF_CT_PROTO_DCCP=y -CONFIG_NF_CT_PROTO_GRE=y -CONFIG_NF_CT_PROTO_SCTP=y -CONFIG_NF_CT_PROTO_UDPLITE=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NF_CT_NETLINK_HELPER=m -CONFIG_NETFILTER_NETLINK_GLUE_CT=y -CONFIG_NF_NAT=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_SIP=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_REDIRECT=y -CONFIG_NF_NAT_MASQUERADE=y -CONFIG_NF_NAT_OVS=y -CONFIG_NETFILTER_SYNPROXY=m -CONFIG_NF_TABLES=m -CONFIG_NF_TABLES_INET=y -CONFIG_NF_TABLES_NETDEV=y -CONFIG_NFT_NUMGEN=m -CONFIG_NFT_CT=m -CONFIG_NFT_FLOW_OFFLOAD=m -CONFIG_NFT_CONNLIMIT=m -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -CONFIG_NFT_NAT=m -CONFIG_NFT_TUNNEL=m -CONFIG_NFT_QUEUE=m -CONFIG_NFT_QUOTA=m -CONFIG_NFT_REJECT=m -CONFIG_NFT_REJECT_INET=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -CONFIG_NFT_FIB=m -CONFIG_NFT_FIB_INET=m -# CONFIG_NFT_XFRM is not set -CONFIG_NFT_SOCKET=m -CONFIG_NFT_OSF=m -CONFIG_NFT_TPROXY=m -# CONFIG_NFT_SYNPROXY is not set -CONFIG_NF_DUP_NETDEV=m -CONFIG_NFT_DUP_NETDEV=m -CONFIG_NFT_FWD_NETDEV=m -CONFIG_NFT_FIB_NETDEV=m -# CONFIG_NFT_REJECT_NETDEV is not set -CONFIG_NF_FLOW_TABLE_INET=m -CONFIG_NF_FLOW_TABLE=m -CONFIG_NF_FLOW_TABLE_PROCFS=y -CONFIG_NETFILTER_XTABLES=m -# CONFIG_NETFILTER_XTABLES_COMPAT is not set - -# -# Xtables combined modules -# -CONFIG_NETFILTER_XT_MARK=m -CONFIG_NETFILTER_XT_CONNMARK=m -CONFIG_NETFILTER_XT_SET=m - -# -# Xtables targets -# -CONFIG_NETFILTER_XT_TARGET_AUDIT=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m -CONFIG_NETFILTER_XT_TARGET_CT=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_NAT=m -CONFIG_NETFILTER_XT_TARGET_NETMAP=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -CONFIG_NETFILTER_XT_TARGET_REDIRECT=m -CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m - -# -# Xtables matches -# -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CGROUP=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ECN=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_L2TP=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NF_LOG_SYSLOG is not set +# CONFIG_NF_TABLES is not set +# CONFIG_NETFILTER_XTABLES is not set # end of Core Netfilter Configuration CONFIG_IP_SET=y CONFIG_IP_SET_MAX=256 -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPMARK=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_IPMAC=m -CONFIG_IP_SET_HASH_MAC=m -CONFIG_IP_SET_HASH_NETPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETNET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_IPV6=y -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_AH_ESP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_FO=m -CONFIG_IP_VS_OVF=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_MH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -# CONFIG_IP_VS_TWOS is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -CONFIG_IP_VS_FTP=m -CONFIG_IP_VS_NFCT=y -CONFIG_IP_VS_PE_SIP=m +# CONFIG_IP_SET_BITMAP_IP is not set +# CONFIG_IP_SET_BITMAP_IPMAC is not set +# CONFIG_IP_SET_BITMAP_PORT is not set +# CONFIG_IP_SET_HASH_IP is not set +# CONFIG_IP_SET_HASH_IPMARK is not set +# CONFIG_IP_SET_HASH_IPPORT is not set +# CONFIG_IP_SET_HASH_IPPORTIP is not set +# CONFIG_IP_SET_HASH_IPPORTNET is not set +# CONFIG_IP_SET_HASH_IPMAC is not set +# CONFIG_IP_SET_HASH_MAC is not set +# CONFIG_IP_SET_HASH_NETPORTNET is not set +# CONFIG_IP_SET_HASH_NET is not set +# CONFIG_IP_SET_HASH_NETNET is not set +# CONFIG_IP_SET_HASH_NETPORT is not set +# CONFIG_IP_SET_HASH_NETIFACE is not set +# CONFIG_IP_SET_LIST_SET is not set +# CONFIG_IP_VS is not set # # IP: Netfilter Configuration # -CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -CONFIG_NF_TABLES_IPV4=y -CONFIG_NFT_REJECT_IPV4=m -CONFIG_NFT_DUP_IPV4=m -CONFIG_NFT_FIB_IPV4=m -CONFIG_NF_TABLES_ARP=y -CONFIG_NF_DUP_IPV4=m -CONFIG_NF_LOG_ARP=m -CONFIG_NF_LOG_IPV4=m -CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -# CONFIG_IP_NF_SECURITY is not set -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +# CONFIG_NF_REJECT_IPV4 is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set # end of IP: Netfilter Configuration # # IPv6: Netfilter Configuration # -CONFIG_NF_SOCKET_IPV6=m -CONFIG_NF_TPROXY_IPV6=m -CONFIG_NF_TABLES_IPV6=y -CONFIG_NFT_REJECT_IPV6=m -CONFIG_NFT_DUP_IPV6=m -CONFIG_NFT_FIB_IPV6=m -CONFIG_NF_DUP_IPV6=m -CONFIG_NF_REJECT_IPV6=m -CONFIG_NF_LOG_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_SRH=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_TARGET_SYNPROXY=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -# CONFIG_IP6_NF_SECURITY is not set -CONFIG_IP6_NF_NAT=m -CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_IP6_NF_TARGET_NPT=m +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set # end of IPv6: Netfilter Configuration -CONFIG_NF_DEFRAG_IPV6=m -CONFIG_NF_TABLES_BRIDGE=m -# CONFIG_NFT_BRIDGE_META is not set -CONFIG_NFT_BRIDGE_REJECT=m -CONFIG_NF_CONNTRACK_BRIDGE=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m # CONFIG_BPFILTER is not set -CONFIG_IP_DCCP=m -CONFIG_INET_DCCP_DIAG=m - -# -# DCCP CCIDs Configuration -# -# CONFIG_IP_DCCP_CCID2_DEBUG is not set -CONFIG_IP_DCCP_CCID3=y -# CONFIG_IP_DCCP_CCID3_DEBUG is not set -CONFIG_IP_DCCP_TFRC_LIB=y -# end of DCCP CCIDs Configuration - -# -# DCCP Kernel Hacking -# -# CONFIG_IP_DCCP_DEBUG is not set -# end of DCCP Kernel Hacking - -CONFIG_IP_SCTP=m -# CONFIG_SCTP_DBG_OBJCNT is not set -CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y -# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set -# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set -CONFIG_SCTP_COOKIE_HMAC_MD5=y -CONFIG_SCTP_COOKIE_HMAC_SHA1=y -CONFIG_INET_SCTP_DIAG=m +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set -CONFIG_L2TP=m -# CONFIG_L2TP_DEBUGFS is not set -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=m -CONFIG_L2TP_ETH=m +# CONFIG_L2TP is not set CONFIG_STP=y CONFIG_MRP=y CONFIG_BRIDGE=y @@ -1636,7 +1244,7 @@ CONFIG_VLAN_8021Q=y # CONFIG_VLAN_8021Q_GVRP is not set CONFIG_VLAN_8021Q_MVRP=y CONFIG_LLC=y -CONFIG_LLC2=m +# CONFIG_LLC2 is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set @@ -1648,35 +1256,33 @@ CONFIG_NET_SCHED=y # # Queueing/Scheduling # -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_MULTIQ=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFB=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_CBS=m +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set # CONFIG_NET_SCH_ETF is not set -CONFIG_NET_SCH_MQPRIO_LIB=m # CONFIG_NET_SCH_TAPRIO is not set -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_MQPRIO=m +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set # CONFIG_NET_SCH_SKBPRIO is not set -CONFIG_NET_SCH_CHOKE=m -CONFIG_NET_SCH_QFQ=m -CONFIG_NET_SCH_CODEL=m -CONFIG_NET_SCH_FQ_CODEL=m -CONFIG_NET_SCH_CAKE=m -CONFIG_NET_SCH_FQ=m -CONFIG_NET_SCH_HHF=m -CONFIG_NET_SCH_PIE=m -CONFIG_NET_SCH_FQ_PIE=m -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_SCH_PLUG=m +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_INGRESS is not set +# CONFIG_NET_SCH_PLUG is not set # CONFIG_NET_SCH_ETS is not set # CONFIG_NET_SCH_DEFAULT is not set @@ -1684,73 +1290,52 @@ CONFIG_NET_SCH_PLUG=m # Classification # CONFIG_NET_CLS=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_PERF=y -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_FLOW=m -CONFIG_NET_CLS_CGROUP=m -CONFIG_NET_CLS_BPF=m -CONFIG_NET_CLS_FLOWER=m -CONFIG_NET_CLS_MATCHALL=m +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_CGROUP is not set +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_EMATCH_IPSET=m -CONFIG_NET_EMATCH_IPT=m +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_NBYTE is not set +# CONFIG_NET_EMATCH_U32 is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_TEXT is not set +# CONFIG_NET_EMATCH_IPSET is not set CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m +# CONFIG_NET_ACT_POLICE is not set +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_MIRRED is not set # CONFIG_NET_ACT_SAMPLE is not set -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_NAT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_ACT_SKBEDIT=m -CONFIG_NET_ACT_CSUM=m +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +# CONFIG_NET_ACT_CSUM is not set # CONFIG_NET_ACT_MPLS is not set -CONFIG_NET_ACT_VLAN=m -CONFIG_NET_ACT_BPF=m -CONFIG_NET_ACT_CONNMARK=m -# CONFIG_NET_ACT_CTINFO is not set -CONFIG_NET_ACT_SKBMOD=m -CONFIG_NET_ACT_IFE=m -CONFIG_NET_ACT_TUNNEL_KEY=m -# CONFIG_NET_ACT_CT is not set +# CONFIG_NET_ACT_VLAN is not set +# CONFIG_NET_ACT_BPF is not set +# CONFIG_NET_ACT_SKBMOD is not set +# CONFIG_NET_ACT_IFE is not set +# CONFIG_NET_ACT_TUNNEL_KEY is not set # CONFIG_NET_ACT_GATE is not set -CONFIG_NET_IFE_SKBMARK=m -CONFIG_NET_IFE_SKBPRIO=m -CONFIG_NET_IFE_SKBTCINDEX=m # CONFIG_NET_TC_SKB_EXT is not set CONFIG_NET_SCH_FIFO=y # CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y # CONFIG_BATMAN_ADV is not set -CONFIG_OPENVSWITCH=m -CONFIG_OPENVSWITCH_GRE=m -CONFIG_OPENVSWITCH_VXLAN=m -CONFIG_OPENVSWITCH_GENEVE=m -CONFIG_VSOCKETS=m -CONFIG_VSOCKETS_DIAG=m -CONFIG_VSOCKETS_LOOPBACK=m -CONFIG_VMWARE_VMCI_VSOCKETS=m -CONFIG_VIRTIO_VSOCKETS=m -CONFIG_VIRTIO_VSOCKETS_COMMON=m -CONFIG_HYPERV_VSOCKETS=m +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set CONFIG_NETLINK_DIAG=y CONFIG_MPLS=y -CONFIG_NET_MPLS_GSO=m -CONFIG_MPLS_ROUTING=m -CONFIG_MPLS_IPTUNNEL=m -CONFIG_NET_NSH=m +# CONFIG_NET_MPLS_GSO is not set +# CONFIG_MPLS_ROUTING is not set +# CONFIG_NET_NSH is not set # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set CONFIG_NET_L3_MASTER_DEV=y @@ -1772,7 +1357,7 @@ CONFIG_NET_FLOW_LIMIT=y # # Network testing # -CONFIG_NET_PKTGEN=m +# CONFIG_NET_PKTGEN is not set CONFIG_NET_DROP_MONITOR=y # end of Network testing # end of Networking options @@ -1782,7 +1367,6 @@ CONFIG_NET_DROP_MONITOR=y # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set -CONFIG_STREAM_PARSER=y # CONFIG_MCTP is not set CONFIG_FIB_RULES=y # CONFIG_WIRELESS is not set @@ -1793,22 +1377,16 @@ CONFIG_NET_9P_VIRTIO=y CONFIG_NET_9P_XEN=y # CONFIG_NET_9P_DEBUG is not set # CONFIG_CAIF is not set -CONFIG_CEPH_LIB=m -# CONFIG_CEPH_LIB_PRETTYDEBUG is not set -CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +# CONFIG_CEPH_LIB is not set # CONFIG_NFC is not set # CONFIG_PSAMPLE is not set -CONFIG_NET_IFE=m +# CONFIG_NET_IFE is not set CONFIG_LWTUNNEL=y CONFIG_LWTUNNEL_BPF=y -CONFIG_DST_CACHE=y -CONFIG_GRO_CELLS=y -CONFIG_NET_SELFTESTS=m CONFIG_NET_SOCK_MSG=y -CONFIG_NET_DEVLINK=y CONFIG_PAGE_POOL=y # CONFIG_PAGE_POOL_STATS is not set -CONFIG_FAILOVER=m +# CONFIG_FAILOVER is not set CONFIG_ETHTOOL_NETLINK=y # @@ -1833,7 +1411,7 @@ CONFIG_PCI_MSI=y CONFIG_PCI_QUIRKS=y # CONFIG_PCI_DEBUG is not set # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set -CONFIG_PCI_STUB=m +# CONFIG_PCI_STUB is not set # CONFIG_PCI_PF_STUB is not set CONFIG_XEN_PCIDEV_FRONTEND=y CONFIG_PCI_ATS=y @@ -1842,7 +1420,6 @@ CONFIG_PCI_IOV=y CONFIG_PCI_PRI=y CONFIG_PCI_PASID=y CONFIG_PCI_LABEL=y -CONFIG_PCI_HYPERV=m # CONFIG_PCIE_BUS_TUNE_OFF is not set CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_SAFE is not set @@ -1859,7 +1436,6 @@ CONFIG_HOTPLUG_PCI_ACPI=y # PCI controller drivers # # CONFIG_VMD is not set -CONFIG_PCI_HYPERV_INTERFACE=m # # Cadence-based PCIe controllers @@ -1963,8 +1539,7 @@ CONFIG_DMIID=y # CONFIG_DMI_SYSFS is not set CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y # CONFIG_ISCSI_IBFT is not set -CONFIG_FW_CFG_SYSFS=m -# CONFIG_FW_CFG_SYSFS_CMDLINE is not set +# CONFIG_FW_CFG_SYSFS is not set CONFIG_SYSFB=y CONFIG_SYSFB_SIMPLEFB=y # CONFIG_GOOGLE_FIRMWARE is not set @@ -1973,8 +1548,7 @@ CONFIG_SYSFB_SIMPLEFB=y # EFI (Extensible Firmware Interface) Support # CONFIG_EFI_ESRT=y -CONFIG_EFI_VARS_PSTORE=m -# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +# CONFIG_EFI_VARS_PSTORE is not set CONFIG_EFI_DXE_MEM_ATTRIBUTES=y CONFIG_EFI_RUNTIME_WRAPPERS=y # CONFIG_EFI_BOOTLOADER_CONTROL is not set @@ -2018,51 +1592,28 @@ CONFIG_PNP=y CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_BLK_DEV_FD=m -# CONFIG_BLK_DEV_FD_RAWCMD is not set -CONFIG_CDROM=m +# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -CONFIG_ZRAM=m -# CONFIG_ZRAM_DEF_COMP_LZORLE is not set -CONFIG_ZRAM_DEF_COMP_LZ4=y -# CONFIG_ZRAM_DEF_COMP_LZO is not set -# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set -CONFIG_ZRAM_DEF_COMP="lz4" -# CONFIG_ZRAM_WRITEBACK is not set -# CONFIG_ZRAM_MEMORY_TRACKING is not set -# CONFIG_ZRAM_MULTI_COMP is not set -CONFIG_BLK_DEV_LOOP=m -CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -CONFIG_BLK_DEV_DRBD=m -# CONFIG_DRBD_FAULT_INJECTION is not set -CONFIG_BLK_DEV_NBD=m +# CONFIG_ZRAM is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_XEN_BLKDEV_FRONTEND=y -CONFIG_XEN_BLKDEV_BACKEND=m -CONFIG_VIRTIO_BLK=m -CONFIG_BLK_DEV_RBD=m +# CONFIG_XEN_BLKDEV_BACKEND is not set +# CONFIG_VIRTIO_BLK is not set +# CONFIG_BLK_DEV_RBD is not set # CONFIG_BLK_DEV_UBLK is not set # # NVME Support # -CONFIG_NVME_CORE=m -CONFIG_BLK_DEV_NVME=m -CONFIG_NVME_MULTIPATH=y -# CONFIG_NVME_VERBOSE_ERRORS is not set -# CONFIG_NVME_HWMON is not set -CONFIG_NVME_FABRICS=m +# CONFIG_BLK_DEV_NVME is not set # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set -# CONFIG_NVME_HOST_AUTH is not set -CONFIG_NVME_TARGET=m -# CONFIG_NVME_TARGET_PASSTHRU is not set -CONFIG_NVME_TARGET_LOOP=m -# CONFIG_NVME_TARGET_FC is not set -# CONFIG_NVME_TARGET_TCP is not set -# CONFIG_NVME_TARGET_AUTH is not set +# CONFIG_NVME_TARGET is not set # end of NVME Support # @@ -2084,7 +1635,6 @@ CONFIG_NVME_TARGET_LOOP=m # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set # CONFIG_DS1682 is not set -CONFIG_VMWARE_BALLOON=m # CONFIG_SRAM is not set # CONFIG_DW_XDATA_PCIE is not set # CONFIG_PCI_ENDPOINT_TEST is not set @@ -2117,37 +1667,38 @@ CONFIG_VMWARE_BALLOON=m # CONFIG_INTEL_MEI is not set # CONFIG_INTEL_MEI_ME is not set # CONFIG_INTEL_MEI_TXE is not set -CONFIG_VMWARE_VMCI=m +# CONFIG_INTEL_MEI_HDCP is not set +# CONFIG_INTEL_MEI_PXP is not set +# CONFIG_INTEL_MEI_GSC_PROXY is not set +# CONFIG_VMWARE_VMCI is not set # CONFIG_GENWQE is not set # CONFIG_ECHO is not set # CONFIG_BCM_VK is not set # CONFIG_MISC_ALCOR_PCI is not set # CONFIG_MISC_RTSX_PCI is not set -# CONFIG_MISC_RTSX_USB is not set # CONFIG_UACCE is not set CONFIG_PVPANIC=y -CONFIG_PVPANIC_MMIO=m -CONFIG_PVPANIC_PCI=m +# CONFIG_PVPANIC_MMIO is not set +# CONFIG_PVPANIC_PCI is not set # end of Misc devices # # SCSI device support # CONFIG_SCSI_MOD=y -CONFIG_RAID_ATTRS=m +# CONFIG_RAID_ATTRS is not set CONFIG_SCSI_COMMON=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y -CONFIG_SCSI_NETLINK=y CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # -CONFIG_BLK_DEV_SD=m +# CONFIG_BLK_DEV_SD is not set # CONFIG_CHR_DEV_ST is not set -CONFIG_BLK_DEV_SR=m -CONFIG_CHR_DEV_SG=m +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set CONFIG_BLK_DEV_BSG=y # CONFIG_CHR_DEV_SCH is not set # CONFIG_SCSI_CONSTANTS is not set @@ -2157,18 +1708,16 @@ CONFIG_SCSI_SCAN_ASYNC=y # # SCSI Transports # -CONFIG_SCSI_SPI_ATTRS=m -CONFIG_SCSI_FC_ATTRS=m -CONFIG_SCSI_ISCSI_ATTRS=m -CONFIG_SCSI_SAS_ATTRS=m -CONFIG_SCSI_SAS_LIBSAS=m -CONFIG_SCSI_SAS_ATA=y -CONFIG_SCSI_SAS_HOST_SMP=y -CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set # end of SCSI Transports CONFIG_SCSI_LOWLEVEL=y -CONFIG_ISCSI_TCP=m +# CONFIG_ISCSI_TCP is not set # CONFIG_ISCSI_BOOT_SYSFS is not set # CONFIG_SCSI_CXGB3_ISCSI is not set # CONFIG_SCSI_CXGB4_ISCSI is not set @@ -2200,9 +1749,7 @@ CONFIG_ISCSI_TCP=m # CONFIG_SCSI_MYRB is not set # CONFIG_SCSI_MYRS is not set CONFIG_VMWARE_PVSCSI=y -CONFIG_XEN_SCSI_FRONTEND=m -CONFIG_HYPERV_STORAGE=m -# CONFIG_LIBFC is not set +# CONFIG_XEN_SCSI_FRONTEND is not set # CONFIG_SCSI_SNIC is not set # CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_FDOMAIN_PCI is not set @@ -2214,19 +1761,14 @@ CONFIG_HYPERV_STORAGE=m # CONFIG_SCSI_SYM53C8XX_2 is not set # CONFIG_SCSI_IPR is not set # CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_EFCT is not set # CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_AM53C974 is not set # CONFIG_SCSI_WD719X is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_PMCRAID is not set # CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_BFA_FC is not set -CONFIG_SCSI_VIRTIO=m -# CONFIG_SCSI_CHELSIO_FCOE is not set +# CONFIG_SCSI_VIRTIO is not set # CONFIG_SCSI_DH is not set # end of SCSI device support @@ -2324,73 +1866,26 @@ CONFIG_ATA_PIIX=y # Generic fallback / legacy drivers # # CONFIG_PATA_ACPI is not set -CONFIG_ATA_GENERIC=m +# CONFIG_ATA_GENERIC is not set # CONFIG_PATA_LEGACY is not set CONFIG_MD=y CONFIG_BLK_DEV_MD=y # CONFIG_MD_AUTODETECT is not set CONFIG_MD_BITMAP_FILE=y # CONFIG_MD_LINEAR is not set -CONFIG_MD_RAID0=m -CONFIG_MD_RAID1=m -CONFIG_MD_RAID10=m -CONFIG_MD_RAID456=m +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID10 is not set +# CONFIG_MD_RAID456 is not set # CONFIG_MD_MULTIPATH is not set # CONFIG_MD_FAULTY is not set -# CONFIG_MD_CLUSTER is not set -CONFIG_BCACHE=m -# CONFIG_BCACHE_DEBUG is not set -# CONFIG_BCACHE_ASYNC_REGISTRATION is not set -CONFIG_BLK_DEV_DM_BUILTIN=y -CONFIG_BLK_DEV_DM=m -# CONFIG_DM_DEBUG is not set -CONFIG_DM_BUFIO=m -# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set -CONFIG_DM_BIO_PRISON=m -CONFIG_DM_PERSISTENT_DATA=m -CONFIG_DM_UNSTRIPED=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_THIN_PROVISIONING=m -CONFIG_DM_CACHE=m -CONFIG_DM_CACHE_SMQ=m -CONFIG_DM_WRITECACHE=m -# CONFIG_DM_EBS is not set -# CONFIG_DM_ERA is not set -# CONFIG_DM_CLONE is not set -CONFIG_DM_MIRROR=m -CONFIG_DM_LOG_USERSPACE=m -CONFIG_DM_RAID=m -CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_QL=m -CONFIG_DM_MULTIPATH_ST=m -# CONFIG_DM_MULTIPATH_HST is not set -CONFIG_DM_MULTIPATH_IOA=m -CONFIG_DM_DELAY=m -# CONFIG_DM_DUST is not set -CONFIG_DM_UEVENT=y -CONFIG_DM_FLAKEY=m -CONFIG_DM_VERITY=m -# CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG is not set -CONFIG_DM_VERITY_FEC=y -CONFIG_DM_SWITCH=m -CONFIG_DM_LOG_WRITES=m -CONFIG_DM_INTEGRITY=m -CONFIG_DM_AUDIT=y -CONFIG_TARGET_CORE=m -# CONFIG_TCM_IBLOCK is not set -# CONFIG_TCM_FILEIO is not set -# CONFIG_TCM_PSCSI is not set -# CONFIG_LOOPBACK_TARGET is not set -# CONFIG_ISCSI_TARGET is not set -# CONFIG_REMOTE_TARGET is not set +# CONFIG_BCACHE is not set +# CONFIG_BLK_DEV_DM is not set +# CONFIG_TARGET_CORE is not set CONFIG_FUSION=y -CONFIG_FUSION_SPI=m -CONFIG_FUSION_FC=m -CONFIG_FUSION_SAS=m +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_SAS is not set CONFIG_FUSION_MAX_SGE=128 -CONFIG_FUSION_CTL=m # CONFIG_FUSION_LOGGING is not set # @@ -2403,43 +1898,28 @@ CONFIG_FUSION_CTL=m # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y CONFIG_NET_CORE=y -CONFIG_BONDING=m -CONFIG_DUMMY=m -CONFIG_WIREGUARD=m -# CONFIG_WIREGUARD_DEBUG is not set +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set # CONFIG_EQUALIZER is not set # CONFIG_NET_FC is not set -CONFIG_IFB=m -CONFIG_NET_TEAM=m -CONFIG_NET_TEAM_MODE_BROADCAST=m -CONFIG_NET_TEAM_MODE_ROUNDROBIN=m -CONFIG_NET_TEAM_MODE_RANDOM=m -CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m -CONFIG_NET_TEAM_MODE_LOADBALANCE=m -CONFIG_MACVLAN=m -CONFIG_MACVTAP=m -CONFIG_IPVLAN_L3S=y -CONFIG_IPVLAN=m -# CONFIG_IPVTAP is not set -CONFIG_VXLAN=m -CONFIG_GENEVE=m -CONFIG_BAREUDP=m +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set # CONFIG_GTP is not set # CONFIG_AMT is not set -CONFIG_MACSEC=m -CONFIG_NETCONSOLE=m -CONFIG_NETCONSOLE_DYNAMIC=y -# CONFIG_NETCONSOLE_EXTENDED_LOG is not set -CONFIG_NETPOLL=y -CONFIG_NET_POLL_CONTROLLER=y -CONFIG_TUN=m -CONFIG_TAP=m +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set # CONFIG_TUN_VNET_CROSS_LE is not set -CONFIG_VETH=m -CONFIG_VIRTIO_NET=m -CONFIG_NLMON=m +# CONFIG_VETH is not set +# CONFIG_VIRTIO_NET is not set +# CONFIG_NLMON is not set # CONFIG_NETKIT is not set -CONFIG_NET_VRF=m +# CONFIG_NET_VRF is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set @@ -2449,7 +1929,7 @@ CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_ALTERA_TSE is not set CONFIG_NET_VENDOR_AMAZON=y -CONFIG_ENA_ETHERNET=m +# CONFIG_ENA_ETHERNET is not set # CONFIG_NET_VENDOR_AMD is not set # CONFIG_NET_VENDOR_AQUANTIA is not set # CONFIG_NET_VENDOR_ARC is not set @@ -2473,21 +1953,19 @@ CONFIG_NET_VENDOR_ENGLEDER=y CONFIG_NET_VENDOR_FUNGIBLE=y # CONFIG_FUN_ETH is not set CONFIG_NET_VENDOR_GOOGLE=y -CONFIG_GVE=m +# CONFIG_GVE is not set # CONFIG_NET_VENDOR_HUAWEI is not set # CONFIG_NET_VENDOR_I825XX is not set CONFIG_NET_VENDOR_INTEL=y # CONFIG_E100 is not set -CONFIG_E1000=m -CONFIG_E1000E=m -CONFIG_E1000E_HWTS=y +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set # CONFIG_IGB is not set # CONFIG_IGBVF is not set # CONFIG_IXGBE is not set -CONFIG_IXGBEVF=m +# CONFIG_IXGBEVF is not set # CONFIG_I40E is not set -CONFIG_IAVF=m -CONFIG_I40EVF=m +# CONFIG_I40EVF is not set # CONFIG_ICE is not set # CONFIG_FM10K is not set # CONFIG_IGC is not set @@ -2496,20 +1974,8 @@ CONFIG_I40EVF=m # CONFIG_NET_VENDOR_LITEX is not set # CONFIG_NET_VENDOR_MARVELL is not set CONFIG_NET_VENDOR_MELLANOX=y -CONFIG_MLX4_EN=m -CONFIG_MLX4_CORE=m -CONFIG_MLX4_DEBUG=y -CONFIG_MLX4_CORE_GEN2=y -CONFIG_MLX5_CORE=m -# CONFIG_MLX5_FPGA is not set -CONFIG_MLX5_CORE_EN=y -CONFIG_MLX5_EN_ARFS=y -CONFIG_MLX5_EN_RXNFC=y -CONFIG_MLX5_MPFS=y -# CONFIG_MLX5_CORE_IPOIB is not set -# CONFIG_MLX5_MACSEC is not set -# CONFIG_MLX5_SF is not set -# CONFIG_MLX5_DPLL is not set +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set # CONFIG_MLXSW_CORE is not set # CONFIG_MLXFW is not set # CONFIG_NET_VENDOR_MICREL is not set @@ -2561,104 +2027,21 @@ CONFIG_NET_VENDOR_XILINX=y # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_NET_SB1000 is not set -CONFIG_PHYLIB=m -CONFIG_SWPHY=y -CONFIG_FIXED_PHY=m - -# -# MII PHY device drivers -# -# CONFIG_AMD_PHY is not set -# CONFIG_ADIN_PHY is not set -# CONFIG_ADIN1100_PHY is not set -# CONFIG_AQUANTIA_PHY is not set -# CONFIG_AX88796B_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_BCM54140_PHY is not set -# CONFIG_BCM7XXX_PHY is not set -# CONFIG_BCM84881_PHY is not set -# CONFIG_BCM87XX_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_CORTINA_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_ICPLUS_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_INTEL_XWAY_PHY is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_MARVELL_PHY is not set -# CONFIG_MARVELL_10G_PHY is not set -# CONFIG_MARVELL_88Q2XXX_PHY is not set -# CONFIG_MARVELL_88X2222_PHY is not set -# CONFIG_MAXLINEAR_GPHY is not set -# CONFIG_MEDIATEK_GE_PHY is not set -# CONFIG_MICREL_PHY is not set -# CONFIG_MICROCHIP_T1S_PHY is not set -# CONFIG_MICROCHIP_PHY is not set -# CONFIG_MICROCHIP_T1_PHY is not set -# CONFIG_MICROSEMI_PHY is not set -# CONFIG_MOTORCOMM_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_NXP_CBTX_PHY is not set -# CONFIG_NXP_C45_TJA11XX_PHY is not set -# CONFIG_NXP_TJA11XX_PHY is not set -# CONFIG_NCN26000_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_RENESAS_PHY is not set -# CONFIG_ROCKCHIP_PHY is not set -# CONFIG_SMSC_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_TERANETICS_PHY is not set -# CONFIG_DP83822_PHY is not set -# CONFIG_DP83TC811_PHY is not set -# CONFIG_DP83848_PHY is not set -# CONFIG_DP83867_PHY is not set -# CONFIG_DP83869_PHY is not set -# CONFIG_DP83TD510_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_PHYLIB is not set # CONFIG_PSE_CONTROLLER is not set -CONFIG_MDIO_DEVICE=m -CONFIG_MDIO_BUS=m -CONFIG_FWNODE_MDIO=m -CONFIG_ACPI_MDIO=m -CONFIG_MDIO_DEVRES=m -# CONFIG_MDIO_BITBANG is not set -# CONFIG_MDIO_BCM_UNIMAC is not set -# CONFIG_MDIO_MVUSB is not set -# CONFIG_MDIO_THUNDER is not set - -# -# MDIO Multiplexers -# +# CONFIG_MDIO_DEVICE is not set # # PCS device drivers # # end of PCS device drivers -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -# CONFIG_PPPOE is not set -CONFIG_PPPOE_HASH_BITS=4 -CONFIG_PPTP=m -CONFIG_PPPOL2TP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_SLIP=m -CONFIG_SLHC=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_SLIP_MODE_SLIP6=y +# CONFIG_PPP is not set +# CONFIG_SLIP is not set # # Host-side USB support is needed for USB Network Adapter support # -# CONFIG_USB_NET_DRIVERS is not set # CONFIG_WLAN is not set # CONFIG_WAN is not set @@ -2669,12 +2052,11 @@ CONFIG_SLIP_MODE_SLIP6=y # end of Wireless WAN CONFIG_XEN_NETDEV_FRONTEND=y -CONFIG_XEN_NETDEV_BACKEND=m -CONFIG_VMXNET3=m +# CONFIG_XEN_NETDEV_BACKEND is not set +# CONFIG_VMXNET3 is not set # CONFIG_FUJITSU_ES is not set -CONFIG_HYPERV_NET=m # CONFIG_NETDEVSIM is not set -CONFIG_NET_FAILOVER=m +# CONFIG_NET_FAILOVER is not set # CONFIG_ISDN is not set # @@ -2689,12 +2071,9 @@ CONFIG_INPUT_VIVALDIFMAP=y # # Userland interfaces # -CONFIG_INPUT_MOUSEDEV=m -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVDEV is not set # CONFIG_INPUT_EVBUG is not set # @@ -2722,21 +2101,7 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_CYPRESS_SF is not set CONFIG_INPUT_MOUSE=y -CONFIG_MOUSE_PS2=m -# CONFIG_MOUSE_PS2_ALPS is not set -# CONFIG_MOUSE_PS2_BYD is not set -# CONFIG_MOUSE_PS2_LOGIPS2PP is not set -# CONFIG_MOUSE_PS2_SYNAPTICS is not set -CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y -# CONFIG_MOUSE_PS2_CYPRESS is not set -# CONFIG_MOUSE_PS2_LIFEBOOK is not set -# CONFIG_MOUSE_PS2_TRACKPOINT is not set -# CONFIG_MOUSE_PS2_ELANTECH is not set -# CONFIG_MOUSE_PS2_SENTELIC is not set -# CONFIG_MOUSE_PS2_TOUCHKIT is not set -# CONFIG_MOUSE_PS2_FOCALTECH is not set -CONFIG_MOUSE_PS2_VMMOUSE=y -CONFIG_MOUSE_PS2_SMBUS=y +# CONFIG_MOUSE_PS2 is not set # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set # CONFIG_MOUSE_BCM5974 is not set @@ -2782,13 +2147,12 @@ CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_CT82C710 is not set -CONFIG_SERIO_PCIPS2=m +# CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set # CONFIG_SERIO_ALTERA_PS2 is not set # CONFIG_SERIO_PS2MULT is not set # CONFIG_SERIO_ARC_PS2 is not set -CONFIG_HYPERV_KEYBOARD=m # CONFIG_USERIO is not set # CONFIG_GAMEPORT is not set # end of Hardware I/O ports @@ -2843,14 +2207,12 @@ CONFIG_SERIAL_8250_PERICOM=y # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_SERIAL_JSM=m +# CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_LANTIQ is not set # CONFIG_SERIAL_SCCNXP is not set # CONFIG_SERIAL_SC16IS7XX is not set -CONFIG_SERIAL_ALTERA_JTAGUART=m -CONFIG_SERIAL_ALTERA_UART=m -CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 -CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_RP2 is not set # CONFIG_SERIAL_FSL_LPUART is not set @@ -2865,30 +2227,21 @@ CONFIG_HVC_DRIVER=y CONFIG_HVC_IRQ=y CONFIG_HVC_XEN=y CONFIG_HVC_XEN_FRONTEND=y -# CONFIG_RPMSG_TTY is not set # CONFIG_SERIAL_DEV_BUS is not set # CONFIG_TTY_PRINTK is not set CONFIG_VIRTIO_CONSOLE=y # CONFIG_IPMI_HANDLER is not set -CONFIG_HW_RANDOM=m -# CONFIG_HW_RANDOM_TIMERIOMEM is not set -# CONFIG_HW_RANDOM_INTEL is not set -# CONFIG_HW_RANDOM_AMD is not set -# CONFIG_HW_RANDOM_BA431 is not set -# CONFIG_HW_RANDOM_VIA is not set -CONFIG_HW_RANDOM_VIRTIO=m -# CONFIG_HW_RANDOM_XIPHERA is not set +# CONFIG_HW_RANDOM is not set # CONFIG_APPLICOM is not set # CONFIG_MWAVE is not set CONFIG_DEVMEM=y -CONFIG_NVRAM=m +# CONFIG_NVRAM is not set CONFIG_DEVPORT=y # CONFIG_HPET is not set -CONFIG_HANGCHECK_TIMER=m +# CONFIG_HANGCHECK_TIMER is not set # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set # CONFIG_XILLYBUS is not set -# CONFIG_XILLYUSB is not set # end of Character devices # @@ -2897,19 +2250,10 @@ CONFIG_HANGCHECK_TIMER=m CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_MUX=m - -# -# Multiplexer I2C Chip support -# -# CONFIG_I2C_MUX_LTC4306 is not set -CONFIG_I2C_MUX_PCA9541=m -# CONFIG_I2C_MUX_REG is not set -# CONFIG_I2C_MUX_MLXCPLD is not set -# end of Multiplexer I2C Chip support - +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_MUX is not set CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m # # I2C Hardware Bus support @@ -2927,7 +2271,7 @@ CONFIG_I2C_HELPER_AUTO=y # CONFIG_I2C_I801 is not set # CONFIG_I2C_ISCH is not set # CONFIG_I2C_ISMT is not set -CONFIG_I2C_PIIX4=m +# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NVIDIA_GPU is not set # CONFIG_I2C_SIS5595 is not set @@ -2953,18 +2297,14 @@ CONFIG_I2C_PIIX4=m # # External I2C/SMBus adapter drivers # -# CONFIG_I2C_DIOLAN_U2C is not set -# CONFIG_I2C_CP2615 is not set # CONFIG_I2C_PCI1XXXX is not set -# CONFIG_I2C_ROBOTFUZZ_OSIF is not set # CONFIG_I2C_TAOS_EVM is not set -# CONFIG_I2C_TINY_USB is not set # # Other I2C/SMBus bus drivers # # CONFIG_I2C_MLXCPLD is not set -CONFIG_I2C_VIRTIO=m +# CONFIG_I2C_VIRTIO is not set # end of I2C Hardware Bus support # CONFIG_I2C_STUB is not set @@ -2997,13 +2337,15 @@ CONFIG_PPS=y # CONFIG_PTP_1588_CLOCK=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y -# CONFIG_DP83640_PHY is not set -# CONFIG_PTP_1588_CLOCK_INES is not set -CONFIG_PTP_1588_CLOCK_KVM=m + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_KVM is not set # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # CONFIG_PTP_1588_CLOCK_MOCK is not set -CONFIG_PTP_1588_CLOCK_VMW=m +# CONFIG_PTP_1588_CLOCK_VMW is not set # end of PTP clock support # CONFIG_PINCTRL is not set @@ -3035,179 +2377,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_CHARGER_BD99954 is not set # CONFIG_BATTERY_UG3105 is not set # CONFIG_FUEL_GAUGE_MM8013 is not set -CONFIG_HWMON=m -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_ABITUGURU is not set -# CONFIG_SENSORS_ABITUGURU3 is not set -# CONFIG_SENSORS_AD7414 is not set -# CONFIG_SENSORS_AD7418 is not set -# CONFIG_SENSORS_ADM1021 is not set -# CONFIG_SENSORS_ADM1025 is not set -# CONFIG_SENSORS_ADM1026 is not set -# CONFIG_SENSORS_ADM1029 is not set -# CONFIG_SENSORS_ADM1031 is not set -# CONFIG_SENSORS_ADM1177 is not set -# CONFIG_SENSORS_ADM9240 is not set -# CONFIG_SENSORS_ADT7410 is not set -# CONFIG_SENSORS_ADT7411 is not set -# CONFIG_SENSORS_ADT7462 is not set -# CONFIG_SENSORS_ADT7470 is not set -# CONFIG_SENSORS_ADT7475 is not set -# CONFIG_SENSORS_AHT10 is not set -# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set -# CONFIG_SENSORS_AS370 is not set -# CONFIG_SENSORS_ASC7621 is not set -# CONFIG_SENSORS_AXI_FAN_CONTROL is not set -# CONFIG_SENSORS_K8TEMP is not set -# CONFIG_SENSORS_K10TEMP is not set -# CONFIG_SENSORS_FAM15H_POWER is not set -# CONFIG_SENSORS_APPLESMC is not set -# CONFIG_SENSORS_ASB100 is not set -# CONFIG_SENSORS_ATXP1 is not set -# CONFIG_SENSORS_CORSAIR_CPRO is not set -# CONFIG_SENSORS_CORSAIR_PSU is not set -# CONFIG_SENSORS_DRIVETEMP is not set -# CONFIG_SENSORS_DS620 is not set -# CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_DELL_SMM is not set -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_F75375S is not set -# CONFIG_SENSORS_FSCHMD is not set -# CONFIG_SENSORS_FTSTEUTATES is not set -# CONFIG_SENSORS_GL518SM is not set -# CONFIG_SENSORS_GL520SM is not set -# CONFIG_SENSORS_G760A is not set -# CONFIG_SENSORS_G762 is not set -# CONFIG_SENSORS_HIH6130 is not set -# CONFIG_SENSORS_HS3001 is not set -# CONFIG_SENSORS_I5500 is not set -# CONFIG_SENSORS_CORETEMP is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_JC42 is not set -# CONFIG_SENSORS_POWERZ is not set -# CONFIG_SENSORS_POWR1220 is not set -# CONFIG_SENSORS_LINEAGE is not set -# CONFIG_SENSORS_LTC2945 is not set -# CONFIG_SENSORS_LTC2947_I2C is not set -# CONFIG_SENSORS_LTC2990 is not set -# CONFIG_SENSORS_LTC2991 is not set -# CONFIG_SENSORS_LTC4151 is not set -# CONFIG_SENSORS_LTC4215 is not set -# CONFIG_SENSORS_LTC4222 is not set -# CONFIG_SENSORS_LTC4245 is not set -# CONFIG_SENSORS_LTC4260 is not set -# CONFIG_SENSORS_LTC4261 is not set -# CONFIG_SENSORS_MAX127 is not set -# CONFIG_SENSORS_MAX16065 is not set -# CONFIG_SENSORS_MAX1619 is not set -# CONFIG_SENSORS_MAX1668 is not set -# CONFIG_SENSORS_MAX197 is not set -# CONFIG_SENSORS_MAX31730 is not set -# CONFIG_SENSORS_MAX31760 is not set -# CONFIG_MAX31827 is not set -# CONFIG_SENSORS_MAX6620 is not set -# CONFIG_SENSORS_MAX6621 is not set -# CONFIG_SENSORS_MAX6639 is not set -# CONFIG_SENSORS_MAX6642 is not set -# CONFIG_SENSORS_MAX6650 is not set -# CONFIG_SENSORS_MAX6697 is not set -# CONFIG_SENSORS_MAX31790 is not set -# CONFIG_SENSORS_MC34VR500 is not set -# CONFIG_SENSORS_MCP3021 is not set -# CONFIG_SENSORS_TC654 is not set -# CONFIG_SENSORS_TPS23861 is not set -# CONFIG_SENSORS_MR75203 is not set -# CONFIG_SENSORS_LM63 is not set -# CONFIG_SENSORS_LM73 is not set -# CONFIG_SENSORS_LM75 is not set -# CONFIG_SENSORS_LM77 is not set -# CONFIG_SENSORS_LM78 is not set -# CONFIG_SENSORS_LM80 is not set -# CONFIG_SENSORS_LM83 is not set -# CONFIG_SENSORS_LM85 is not set -# CONFIG_SENSORS_LM87 is not set -# CONFIG_SENSORS_LM90 is not set -# CONFIG_SENSORS_LM92 is not set -# CONFIG_SENSORS_LM93 is not set -# CONFIG_SENSORS_LM95234 is not set -# CONFIG_SENSORS_LM95241 is not set -# CONFIG_SENSORS_LM95245 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_NCT6683 is not set -# CONFIG_SENSORS_NCT6775 is not set -# CONFIG_SENSORS_NCT6775_I2C is not set -# CONFIG_SENSORS_NCT7802 is not set -# CONFIG_SENSORS_NCT7904 is not set -# CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_NZXT_KRAKEN2 is not set -# CONFIG_SENSORS_NZXT_SMART2 is not set -# CONFIG_SENSORS_OCC_P8_I2C is not set -# CONFIG_SENSORS_OXP is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_PMBUS is not set -# CONFIG_SENSORS_SBTSI is not set -# CONFIG_SENSORS_SBRMI is not set -# CONFIG_SENSORS_SHT21 is not set -# CONFIG_SENSORS_SHT3x is not set -# CONFIG_SENSORS_SHT4x is not set -# CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_DME1737 is not set -# CONFIG_SENSORS_EMC1403 is not set -# CONFIG_SENSORS_EMC2103 is not set -# CONFIG_SENSORS_EMC2305 is not set -# CONFIG_SENSORS_EMC6W201 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47M192 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_SCH5636 is not set -# CONFIG_SENSORS_STTS751 is not set -# CONFIG_SENSORS_ADC128D818 is not set -# CONFIG_SENSORS_ADS7828 is not set -# CONFIG_SENSORS_AMC6821 is not set -# CONFIG_SENSORS_INA209 is not set -# CONFIG_SENSORS_INA2XX is not set -# CONFIG_SENSORS_INA238 is not set -# CONFIG_SENSORS_INA3221 is not set -# CONFIG_SENSORS_TC74 is not set -# CONFIG_SENSORS_THMC50 is not set -# CONFIG_SENSORS_TMP102 is not set -# CONFIG_SENSORS_TMP103 is not set -# CONFIG_SENSORS_TMP108 is not set -# CONFIG_SENSORS_TMP401 is not set -# CONFIG_SENSORS_TMP421 is not set -# CONFIG_SENSORS_TMP464 is not set -# CONFIG_SENSORS_TMP513 is not set -# CONFIG_SENSORS_VIA_CPUTEMP is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83773G is not set -# CONFIG_SENSORS_W83781D is not set -# CONFIG_SENSORS_W83791D is not set -# CONFIG_SENSORS_W83792D is not set -# CONFIG_SENSORS_W83793 is not set -# CONFIG_SENSORS_W83795 is not set -# CONFIG_SENSORS_W83L785TS is not set -# CONFIG_SENSORS_W83L786NG is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -# CONFIG_SENSORS_XGENE is not set - -# -# ACPI drivers -# -CONFIG_SENSORS_ACPI_POWER=m -# CONFIG_SENSORS_ATK0110 is not set -# CONFIG_SENSORS_ASUS_EC is not set +# CONFIG_HWMON is not set CONFIG_THERMAL=y # CONFIG_THERMAL_NETLINK is not set # CONFIG_THERMAL_STATISTICS is not set @@ -3278,7 +2448,7 @@ CONFIG_WATCHDOG_SYSFS=y # CONFIG_IB700_WDT is not set # CONFIG_IBMASR is not set # CONFIG_WAFER_WDT is not set -CONFIG_I6300ESB_WDT=m +# CONFIG_I6300ESB_WDT is not set # CONFIG_IE6XX_WDT is not set # CONFIG_ITCO_WDT is not set # CONFIG_IT8712F_WDT is not set @@ -3300,18 +2470,13 @@ CONFIG_I6300ESB_WDT=m # CONFIG_SBC_EPX_C3_WATCHDOG is not set # CONFIG_NI903X_WDT is not set # CONFIG_NIC7018_WDT is not set -CONFIG_XEN_WDT=m +# CONFIG_XEN_WDT is not set # # PCI-based Watchdog Cards # # CONFIG_PCIPCWATCHDOG is not set # CONFIG_WDTPCI is not set - -# -# USB-based Watchdog Cards -# -# CONFIG_USBPCWATCHDOG is not set CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set CONFIG_BCMA_POSSIBLE=y @@ -3329,13 +2494,13 @@ CONFIG_BCMA_POSSIBLE=y # CONFIG_MFD_DA9062 is not set # CONFIG_MFD_DA9063 is not set # CONFIG_MFD_DA9150 is not set -# CONFIG_MFD_DLN2 is not set # CONFIG_MFD_MC13XXX_I2C is not set # CONFIG_MFD_MP2629 is not set # CONFIG_LPC_ICH is not set # CONFIG_LPC_SCH is not set # CONFIG_MFD_INTEL_LPSS_ACPI is not set # CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_INTEL_PMC_BXT is not set # CONFIG_MFD_IQS62X is not set # CONFIG_MFD_JANZ_CMODIO is not set # CONFIG_MFD_KEMPLD is not set @@ -3348,7 +2513,6 @@ CONFIG_BCMA_POSSIBLE=y # CONFIG_MFD_MT6370 is not set # CONFIG_MFD_MT6397 is not set # CONFIG_MFD_MENF21BMC is not set -# CONFIG_MFD_VIPERBOARD is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set # CONFIG_MFD_SY7636A is not set @@ -3397,7 +2561,10 @@ CONFIG_VIDEO_CMDLINE=y CONFIG_VIDEO_NOMODESET=y # CONFIG_AUXDISPLAY is not set # CONFIG_AGP is not set +CONFIG_INTEL_GTT=m +# CONFIG_VGA_SWITCHEROO is not set CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_KMS_HELPER=m # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_MODESET_LOCK is not set @@ -3405,16 +2572,24 @@ CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_HDCP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DP_CEC is not set CONFIG_DRM_TTM=m -CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_EXEC=m +CONFIG_DRM_GPUVM=m +CONFIG_DRM_BUDDY=m CONFIG_DRM_TTM_HELPER=m -CONFIG_DRM_GEM_SHMEM_HELPER=m +CONFIG_DRM_SCHED=m # # I2C encoder or helper chips # -# CONFIG_DRM_I2C_CH7006 is not set -# CONFIG_DRM_I2C_SIL164 is not set +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m # CONFIG_DRM_I2C_NXP_TDA998X is not set # CONFIG_DRM_I2C_NXP_TDA9950 is not set # end of I2C encoder or helper chips @@ -3426,24 +2601,61 @@ CONFIG_DRM_GEM_SHMEM_HELPER=m # CONFIG_DRM_RADEON is not set # CONFIG_DRM_AMDGPU is not set -# CONFIG_DRM_NOUVEAU is not set -# CONFIG_DRM_I915 is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_DEBUG_PUSH is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_I915=m +CONFIG_DRM_I915_FORCE_PROBE="" +CONFIG_DRM_I915_CAPTURE_ERROR=y +CONFIG_DRM_I915_COMPRESS_ERROR=y +CONFIG_DRM_I915_USERPTR=y + +# +# drm/i915 Debugging +# +# CONFIG_DRM_I915_WERROR is not set +# CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_DEBUG_MMIO is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set +# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set +# CONFIG_DRM_I915_DEBUG_GUC is not set +# CONFIG_DRM_I915_SELFTEST is not set +# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set +# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set +# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# end of drm/i915 Debugging + +# +# drm/i915 Profile Guided Optimisation +# +CONFIG_DRM_I915_REQUEST_TIMEOUT=20000 +CONFIG_DRM_I915_FENCE_TIMEOUT=10000 +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 +CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 +CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 +CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500 +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 +CONFIG_DRM_I915_STOP_TIMEOUT=100 +CONFIG_DRM_I915_TIMESLICE_DURATION=1 +# end of drm/i915 Profile Guided Optimisation + # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set -CONFIG_DRM_VMWGFX=m -CONFIG_DRM_VMWGFX_MKSSTATS=y +# CONFIG_DRM_VMWGFX is not set # CONFIG_DRM_GMA500 is not set -# CONFIG_DRM_UDL is not set # CONFIG_DRM_AST is not set # CONFIG_DRM_MGAG200 is not set -CONFIG_DRM_QXL=m -CONFIG_DRM_VIRTIO_GPU=m -CONFIG_DRM_VIRTIO_GPU_KMS=y +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_VIRTIO_GPU is not set CONFIG_DRM_PANEL=y # # Display Panels # +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set # end of Display Panels CONFIG_DRM_BRIDGE=y @@ -3457,16 +2669,12 @@ CONFIG_DRM_PANEL_BRIDGE=y # CONFIG_DRM_LOONGSON is not set # CONFIG_DRM_ETNAVIV is not set -CONFIG_DRM_BOCHS=m -CONFIG_DRM_CIRRUS_QEMU=m -# CONFIG_DRM_GM12U320 is not set -CONFIG_DRM_SIMPLEDRM=m -CONFIG_DRM_XEN=y -CONFIG_DRM_XEN_FRONTEND=m -CONFIG_DRM_VBOXVIDEO=m -# CONFIG_DRM_GUD is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_SIMPLEDRM is not set +# CONFIG_DRM_XEN_FRONTEND is not set +# CONFIG_DRM_VBOXVIDEO is not set # CONFIG_DRM_SSD130X is not set -CONFIG_DRM_HYPERV=m # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m @@ -3484,7 +2692,10 @@ CONFIG_FB=m # CONFIG_FB_HGA is not set # CONFIG_FB_OPENCORES is not set # CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set +CONFIG_FB_NVIDIA=m +# CONFIG_FB_NVIDIA_I2C is not set +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y # CONFIG_FB_RIVA is not set # CONFIG_FB_I740 is not set # CONFIG_FB_LE80578 is not set @@ -3504,20 +2715,20 @@ CONFIG_FB=m # CONFIG_FB_ARK is not set # CONFIG_FB_PM3 is not set # CONFIG_FB_CARMINE is not set -# CONFIG_FB_SMSCUFX is not set -# CONFIG_FB_UDL is not set # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set -# CONFIG_XEN_FBDEV_FRONTEND is not set +CONFIG_XEN_FBDEV_FRONTEND=m # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set -# CONFIG_FB_HYPERV is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SM712 is not set CONFIG_FB_CORE=m CONFIG_FB_NOTIFY=y # CONFIG_FIRMWARE_EDID is not set CONFIG_FB_DEVICE=y +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_IMAGEBLIT=m CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m @@ -3525,8 +2736,10 @@ CONFIG_FB_SYS_IMAGEBLIT=m CONFIG_FB_SYS_FOPS=m CONFIG_FB_DEFERRED_IO=y CONFIG_FB_IOMEM_FOPS=m +CONFIG_FB_IOMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_BACKLIGHT=m # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # end of Frame buffer Devices @@ -3535,10 +2748,20 @@ CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y # Backlight & LCD device support # # CONFIG_LCD_CLASS_DEVICE is not set -# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=m +# CONFIG_BACKLIGHT_KTZ8866 is not set +# CONFIG_BACKLIGHT_APPLE is not set +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_SAHARA is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set # end of Backlight & LCD device support -CONFIG_VIDEOMODE_HELPERS=y +CONFIG_VGASTATE=m CONFIG_HDMI=y # @@ -3548,10 +2771,7 @@ CONFIG_VGA_CONSOLE=y CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE is not set # end of Console display driver support # CONFIG_LOGO is not set @@ -3562,14 +2782,13 @@ CONFIG_SOUND=y CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m -CONFIG_SND_HWDEP=m CONFIG_SND_JACK=y CONFIG_SND_JACK_INPUT_DEV=y # CONFIG_SND_OSSEMUL is not set CONFIG_SND_PCM_TIMER=y # CONFIG_SND_HRTIMER is not set # CONFIG_SND_DYNAMIC_MINORS is not set -# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_PROC_FS=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set @@ -3579,6 +2798,7 @@ CONFIG_SND_CTL_FAST_LOOKUP=y CONFIG_SND_VMASTER=y CONFIG_SND_DMA_SGBUF=y # CONFIG_SND_SEQUENCER is not set +CONFIG_SND_AC97_CODEC=m CONFIG_SND_DRIVERS=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_ALOOP is not set @@ -3586,6 +2806,7 @@ CONFIG_SND_DRIVERS=y # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set +# CONFIG_SND_AC97_POWER_SAVE is not set CONFIG_SND_PCI=y # CONFIG_SND_AD1889 is not set # CONFIG_SND_ALS300 is not set @@ -3631,7 +2852,7 @@ CONFIG_SND_PCI=y # CONFIG_SND_HDSPM is not set # CONFIG_SND_ICE1712 is not set # CONFIG_SND_ICE1724 is not set -# CONFIG_SND_INTEL8X0 is not set +CONFIG_SND_INTEL8X0=m # CONFIG_SND_INTEL8X0M is not set # CONFIG_SND_KORG1212 is not set # CONFIG_SND_LOLA is not set @@ -3658,7 +2879,7 @@ CONFIG_SND_PCI=y # CONFIG_SND_HDA=m CONFIG_SND_HDA_INTEL=m -CONFIG_SND_HDA_HWDEP=y +# CONFIG_SND_HDA_HWDEP is not set # CONFIG_SND_HDA_RECONFIG is not set # CONFIG_SND_HDA_INPUT_BEEP is not set # CONFIG_SND_HDA_PATCH_LOADER is not set @@ -3674,296 +2895,58 @@ CONFIG_SND_HDA_HWDEP=y # CONFIG_SND_HDA_CODEC_CA0132 is not set # CONFIG_SND_HDA_CODEC_CMEDIA is not set # CONFIG_SND_HDA_CODEC_SI3054 is not set -CONFIG_SND_HDA_GENERIC=m +# CONFIG_SND_HDA_GENERIC is not set CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 # CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set # CONFIG_SND_HDA_CTL_DEV_ID is not set # end of HD-Audio CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_I915=y CONFIG_SND_HDA_PREALLOC_SIZE=0 CONFIG_SND_INTEL_NHLT=y CONFIG_SND_INTEL_DSP_CONFIG=m CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m -# CONFIG_SND_USB is not set # CONFIG_SND_SOC is not set CONFIG_SND_X86=y +# CONFIG_HDMI_LPE_AUDIO is not set # CONFIG_SND_XEN_FRONTEND is not set -CONFIG_SND_VIRTIO=m +# CONFIG_SND_VIRTIO is not set +CONFIG_AC97_BUS=m CONFIG_HID_SUPPORT=y -CONFIG_HID=m -# CONFIG_HID_BATTERY_STRENGTH is not set -CONFIG_HIDRAW=y -CONFIG_UHID=m -CONFIG_HID_GENERIC=m - -# -# Special HID drivers -# -# CONFIG_HID_A4TECH is not set -# CONFIG_HID_ACCUTOUCH is not set -# CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLEIR is not set -# CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set -# CONFIG_HID_BETOP_FF is not set -CONFIG_HID_CHERRY=m -# CONFIG_HID_CHICONY is not set -# CONFIG_HID_COUGAR is not set -# CONFIG_HID_MACALLY is not set -# CONFIG_HID_PRODIKEYS is not set -# CONFIG_HID_CMEDIA is not set -# CONFIG_HID_CREATIVE_SB0540 is not set -# CONFIG_HID_CYPRESS is not set -# CONFIG_HID_DRAGONRISE is not set -# CONFIG_HID_EMS_FF is not set -# CONFIG_HID_ELECOM is not set -# CONFIG_HID_ELO is not set -# CONFIG_HID_EVISION is not set -# CONFIG_HID_EZKEY is not set -# CONFIG_HID_FT260 is not set -# CONFIG_HID_GEMBIRD is not set -# CONFIG_HID_GFRM is not set -# CONFIG_HID_GLORIOUS is not set -# CONFIG_HID_HOLTEK is not set -# CONFIG_HID_GOOGLE_STADIA_FF is not set -# CONFIG_HID_VIVALDI is not set -# CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set -# CONFIG_HID_UCLOGIC is not set -# CONFIG_HID_WALTOP is not set -# CONFIG_HID_VIEWSONIC is not set -# CONFIG_HID_VRC2 is not set -# CONFIG_HID_XIAOMI is not set -# CONFIG_HID_GYRATION is not set -# CONFIG_HID_ICADE is not set -# CONFIG_HID_ITE is not set -# CONFIG_HID_JABRA is not set -# CONFIG_HID_TWINHAN is not set -# CONFIG_HID_KENSINGTON is not set -# CONFIG_HID_LCPOWER is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LETSKETCH is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MALTRON is not set -# CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_MEGAWORLD_FF is not set -# CONFIG_HID_REDRAGON is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set -# CONFIG_HID_MULTITOUCH is not set -# CONFIG_HID_NTI is not set -# CONFIG_HID_NTRIG is not set -# CONFIG_HID_ORTEK is not set -# CONFIG_HID_PANTHERLORD is not set -# CONFIG_HID_PENMOUNT is not set -# CONFIG_HID_PETALYNX is not set -# CONFIG_HID_PICOLCD is not set -# CONFIG_HID_PLANTRONICS is not set -# CONFIG_HID_PXRC is not set -# CONFIG_HID_RAZER is not set -# CONFIG_HID_PRIMAX is not set -# CONFIG_HID_RETRODE is not set -# CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set -# CONFIG_HID_SAMSUNG is not set -# CONFIG_HID_SEMITEK is not set -# CONFIG_HID_SIGMAMICRO is not set -# CONFIG_HID_SPEEDLINK is not set -# CONFIG_HID_STEAM is not set -# CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set -# CONFIG_HID_RMI is not set -# CONFIG_HID_GREENASIA is not set -CONFIG_HID_HYPERV_MOUSE=m -# CONFIG_HID_SMARTJOYPLUS is not set -# CONFIG_HID_TIVO is not set -# CONFIG_HID_TOPSEED is not set -# CONFIG_HID_TOPRE is not set -# CONFIG_HID_THRUSTMASTER is not set -# CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_WACOM is not set -# CONFIG_HID_XINMO is not set -# CONFIG_HID_ZEROPLUS is not set -# CONFIG_HID_ZYDACRON is not set -# CONFIG_HID_SENSOR_HUB is not set -# CONFIG_HID_ALPS is not set -# CONFIG_HID_MCP2221 is not set -# end of Special HID drivers - -# -# HID-BPF support -# -# end of HID-BPF support - -# -# USB HID support -# -CONFIG_USB_HID=m -# CONFIG_HID_PID is not set -# CONFIG_USB_HIDDEV is not set - -# -# USB HID Boot Protocol drivers -# -CONFIG_USB_KBD=m -CONFIG_USB_MOUSE=m -# end of USB HID Boot Protocol drivers -# end of USB HID support - -CONFIG_I2C_HID=m -# CONFIG_I2C_HID_ACPI is not set -# CONFIG_I2C_HID_OF is not set +# CONFIG_HID is not set # # Intel ISH HID support # -# CONFIG_INTEL_ISH_HID is not set # end of Intel ISH HID support # # AMD SFH HID Support # -# CONFIG_AMD_SFH_HID is not set # end of AMD SFH HID Support CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y -CONFIG_USB_COMMON=m # CONFIG_USB_ULPI_BUS is not set CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB=m +# CONFIG_USB is not set CONFIG_USB_PCI=y CONFIG_USB_PCI_AMD=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y - -# -# Miscellaneous USB options -# -CONFIG_USB_DEFAULT_PERSIST=y -# CONFIG_USB_FEW_INIT_RETRIES is not set -# CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_OTG is not set -# CONFIG_USB_OTG_PRODUCTLIST is not set -# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set -CONFIG_USB_AUTOSUSPEND_DELAY=2 -CONFIG_USB_MON=m - -# -# USB Host Controller Drivers -# -# CONFIG_USB_C67X00_HCD is not set -CONFIG_USB_XHCI_HCD=m -# CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=m -# CONFIG_USB_XHCI_PCI_RENESAS is not set -# CONFIG_USB_XHCI_PLATFORM is not set -CONFIG_USB_EHCI_HCD=m -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -# CONFIG_USB_EHCI_TT_NEWSCHED is not set -CONFIG_USB_EHCI_PCI=m -# CONFIG_USB_EHCI_FSL is not set -CONFIG_USB_EHCI_HCD_PLATFORM=m -# CONFIG_USB_OXU210HP_HCD is not set -# CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=m -CONFIG_USB_OHCI_HCD_PCI=m -CONFIG_USB_OHCI_HCD_PLATFORM=m -CONFIG_USB_UHCI_HCD=m -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set -# CONFIG_USB_HCD_TEST_MODE is not set -CONFIG_USB_XEN_HCD=m - -# -# USB Device Class drivers -# -# CONFIG_USB_ACM is not set -# CONFIG_USB_PRINTER is not set -# CONFIG_USB_WDM is not set -# CONFIG_USB_TMC is not set - -# -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may -# - -# -# also be needed; see USB_STORAGE Help for more info -# -CONFIG_USB_STORAGE=m -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_REALTEK is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_ISD200 is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_ONETOUCH is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -# CONFIG_USB_STORAGE_ENE_UB6250 is not set -CONFIG_USB_UAS=m - -# -# USB Imaging devices -# -# CONFIG_USB_MDC800 is not set -# CONFIG_USB_MICROTEK is not set -# CONFIG_USBIP_CORE is not set # # USB dual-mode controller drivers # -# CONFIG_USB_CDNS_SUPPORT is not set -# CONFIG_USB_MUSB_HDRC is not set -# CONFIG_USB_DWC3 is not set -# CONFIG_USB_DWC2 is not set -# CONFIG_USB_CHIPIDEA is not set -# CONFIG_USB_ISP1760 is not set # # USB port drivers # -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_ADUTUX is not set -# CONFIG_USB_SEVSEG is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_APPLE_MFI_FASTCHARGE is not set -# CONFIG_USB_LJCA is not set -# CONFIG_USB_SISUSBVGA is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set -# CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set -# CONFIG_USB_YUREX is not set -# CONFIG_USB_EZUSB_FX2 is not set -# CONFIG_USB_HUB_USB251XB is not set -# CONFIG_USB_HSIC_USB3503 is not set -# CONFIG_USB_HSIC_USB4604 is not set -# CONFIG_USB_LINK_LAYER_TEST is not set -# CONFIG_USB_CHAOSKEY is not set # # USB Physical Layer drivers # # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_USB_ISP1301 is not set # end of USB Physical Layer drivers # CONFIG_USB_GADGET is not set @@ -3994,7 +2977,7 @@ CONFIG_RTC_INTF_SYSFS=y CONFIG_RTC_INTF_PROC=y CONFIG_RTC_INTF_DEV=y CONFIG_RTC_INTF_DEV_UIE_EMUL=y -CONFIG_RTC_DRV_TEST=m +# CONFIG_RTC_DRV_TEST is not set # # I2C RTC drivers @@ -4073,32 +3056,24 @@ CONFIG_DMADEVICES=y # # DMA Devices # -CONFIG_DMA_ENGINE=y CONFIG_DMA_ACPI=y # CONFIG_ALTERA_MSGDMA is not set # CONFIG_INTEL_IDMA64 is not set # CONFIG_INTEL_IDXD is not set # CONFIG_INTEL_IDXD_COMPAT is not set -CONFIG_INTEL_IOATDMA=m +# CONFIG_INTEL_IOATDMA is not set # CONFIG_PLX_DMA is not set # CONFIG_XILINX_DMA is not set # CONFIG_XILINX_XDMA is not set # CONFIG_AMD_PTDMA is not set # CONFIG_QCOM_HIDMA_MGMT is not set -CONFIG_QCOM_HIDMA=m +# CONFIG_QCOM_HIDMA is not set # CONFIG_DW_DMAC is not set # CONFIG_DW_DMAC_PCI is not set # CONFIG_DW_EDMA is not set # CONFIG_SF_PDMA is not set # CONFIG_INTEL_LDMA is not set -# -# DMA Clients -# -# CONFIG_ASYNC_TX_DMA is not set -# CONFIG_DMATEST is not set -CONFIG_DMA_ENGINE_RAID=y - # # DMABUF options # @@ -4112,15 +3087,13 @@ CONFIG_SYNC_FILE=y # CONFIG_DMABUF_SYSFS_STATS is not set # end of DMABUF options -CONFIG_DCA=m # CONFIG_UIO is not set # CONFIG_VFIO is not set -CONFIG_IRQ_BYPASS_MANAGER=m CONFIG_VIRT_DRIVERS=y CONFIG_VMGENID=y -CONFIG_VBOXGUEST=m -CONFIG_NITRO_ENCLAVES=m -CONFIG_EFI_SECRET=m +# CONFIG_VBOXGUEST is not set +# CONFIG_NITRO_ENCLAVES is not set +# CONFIG_EFI_SECRET is not set CONFIG_VIRTIO_ANCHOR=y CONFIG_VIRTIO=y CONFIG_VIRTIO_PCI_LIB=y @@ -4128,40 +3101,21 @@ CONFIG_VIRTIO_PCI_LIB_LEGACY=y CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI_LEGACY=y -CONFIG_VIRTIO_VDPA=m # CONFIG_VIRTIO_PMEM is not set -CONFIG_VIRTIO_BALLOON=m +# CONFIG_VIRTIO_BALLOON is not set # CONFIG_VIRTIO_MEM is not set -CONFIG_VIRTIO_INPUT=m +# CONFIG_VIRTIO_INPUT is not set CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y -CONFIG_VIRTIO_DMA_SHARED_BUFFER=m -CONFIG_VDPA=m -# CONFIG_VDPA_USER is not set -CONFIG_IFCVF=m -# CONFIG_MLX5_VDPA_NET is not set -# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set -CONFIG_VP_VDPA=m -# CONFIG_ALIBABA_ENI_VDPA is not set -# CONFIG_SNET_VDPA is not set -CONFIG_VHOST_IOTLB=m -CONFIG_VHOST_TASK=y -CONFIG_VHOST=m +# CONFIG_VDPA is not set CONFIG_VHOST_MENU=y -CONFIG_VHOST_NET=m -# CONFIG_VHOST_SCSI is not set -# CONFIG_VHOST_VSOCK is not set -CONFIG_VHOST_VDPA=m +# CONFIG_VHOST_NET is not set # CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set # # Microsoft Hyper-V guest support # -CONFIG_HYPERV=m -# CONFIG_HYPERV_VTL_MODE is not set -CONFIG_HYPERV_TIMER=y -CONFIG_HYPERV_UTILS=m -CONFIG_HYPERV_BALLOON=m +# CONFIG_HYPERV is not set # end of Microsoft Hyper-V guest support # @@ -4177,25 +3131,22 @@ CONFIG_XENFS=y CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_SYS_HYPERVISOR=y CONFIG_XEN_XENBUS_FRONTEND=y -CONFIG_XEN_GNTDEV=m -CONFIG_XEN_GRANT_DEV_ALLOC=m +# CONFIG_XEN_GNTDEV is not set +# CONFIG_XEN_GRANT_DEV_ALLOC is not set # CONFIG_XEN_GRANT_DMA_ALLOC is not set CONFIG_SWIOTLB_XEN=y -CONFIG_XEN_PCI_STUB=y -CONFIG_XEN_PCIDEV_BACKEND=m -CONFIG_XEN_PVCALLS_FRONTEND=m +# CONFIG_XEN_PCIDEV_BACKEND is not set +# CONFIG_XEN_PVCALLS_FRONTEND is not set # CONFIG_XEN_PVCALLS_BACKEND is not set -CONFIG_XEN_SCSI_BACKEND=m CONFIG_XEN_PRIVCMD=y # CONFIG_XEN_PRIVCMD_EVENTFD is not set -CONFIG_XEN_ACPI_PROCESSOR=m +# CONFIG_XEN_ACPI_PROCESSOR is not set CONFIG_XEN_HAVE_PVMMU=y CONFIG_XEN_EFI=y CONFIG_XEN_AUTO_XLATE=y CONFIG_XEN_ACPI=y # CONFIG_XEN_SYMS is not set CONFIG_XEN_HAVE_VPMU=y -CONFIG_XEN_FRONT_PGDIR_SHBUF=m CONFIG_XEN_GRANT_DMA_OPS=y CONFIG_XEN_VIRTIO=y # CONFIG_XEN_VIRTIO_FORCE_GRANT is not set @@ -4207,7 +3158,77 @@ CONFIG_XEN_VIRTIO=y # CONFIG_CHROME_PLATFORMS is not set # CONFIG_MELLANOX_PLATFORM is not set # CONFIG_SURFACE_PLATFORMS is not set -# CONFIG_X86_PLATFORM_DEVICES is not set +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACPI_WMI=m +CONFIG_WMI_BMOF=m +CONFIG_MXM_WMI=m +# CONFIG_NVIDIA_WMI_EC_BACKLIGHT is not set +# CONFIG_XIAOMI_WMI is not set +# CONFIG_YOGABOOK is not set +# CONFIG_ACERHDF is not set +# CONFIG_ACER_WIRELESS is not set +# CONFIG_ACER_WMI is not set +# CONFIG_AMD_PMF is not set +# CONFIG_AMD_PMC is not set +# CONFIG_AMD_HSMP is not set +# CONFIG_ADV_SWBUTTON is not set +# CONFIG_APPLE_GMUX is not set +# CONFIG_ASUS_LAPTOP is not set +# CONFIG_ASUS_WIRELESS is not set +# CONFIG_EEEPC_LAPTOP is not set +# CONFIG_X86_PLATFORM_DRIVERS_DELL is not set +# CONFIG_FUJITSU_LAPTOP is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_GPD_POCKET_FAN is not set +# CONFIG_X86_PLATFORM_DRIVERS_HP is not set +# CONFIG_WIRELESS_HOTKEY is not set +# CONFIG_IBM_RTL is not set +# CONFIG_LENOVO_YMC is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_THINKPAD_LMI is not set +# CONFIG_INTEL_ATOMISP2_PM is not set +# CONFIG_INTEL_IFS is not set +# CONFIG_INTEL_SAR_INT1092 is not set +# CONFIG_INTEL_PMC_CORE is not set + +# +# Intel Speed Select Technology interface support +# +# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set +# end of Intel Speed Select Technology interface support + +# CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set +# CONFIG_INTEL_WMI_THUNDERBOLT is not set + +# +# Intel Uncore Frequency Control +# +# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set +# end of Intel Uncore Frequency Control + +# CONFIG_INTEL_HID_EVENT is not set +# CONFIG_INTEL_VBTN is not set +# CONFIG_INTEL_PUNIT_IPC is not set +# CONFIG_INTEL_RST is not set +# CONFIG_INTEL_SMARTCONNECT is not set +# CONFIG_INTEL_TURBO_MAX_3 is not set +# CONFIG_INTEL_VSEC is not set +# CONFIG_MSI_WMI is not set +# CONFIG_SAMSUNG_LAPTOP is not set +# CONFIG_SAMSUNG_Q10 is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +# CONFIG_TOSHIBA_HAPS is not set +# CONFIG_TOSHIBA_WMI is not set +# CONFIG_ACPI_CMPC is not set +# CONFIG_PANASONIC_LAPTOP is not set +# CONFIG_TOPSTAR_LAPTOP is not set +# CONFIG_MLX_PLATFORM is not set +# CONFIG_INSPUR_PLATFORM_PROFILE is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_SCU_PCI is not set +# CONFIG_INTEL_SCU_PLATFORM is not set +# CONFIG_SIEMENS_SIMATIC_IPC is not set +# CONFIG_WINMATE_FM07_KEYS is not set # CONFIG_COMMON_CLK is not set # CONFIG_HWSPINLOCK is not set @@ -4245,8 +3266,7 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y CONFIG_INTEL_IOMMU_PERF_EVENTS=y # CONFIG_IOMMUFD is not set CONFIG_IRQ_REMAP=y -CONFIG_HYPERV_IOMMU=y -CONFIG_VIRTIO_IOMMU=m +# CONFIG_VIRTIO_IOMMU is not set # # Remoteproc drivers @@ -4257,12 +3277,8 @@ CONFIG_VIRTIO_IOMMU=m # # Rpmsg drivers # -CONFIG_RPMSG=m -# CONFIG_RPMSG_CHAR is not set -# CONFIG_RPMSG_CTRL is not set -CONFIG_RPMSG_NS=m # CONFIG_RPMSG_QCOM_GLINK_RPM is not set -CONFIG_RPMSG_VIRTIO=m +# CONFIG_RPMSG_VIRTIO is not set # end of Rpmsg drivers # CONFIG_SOUNDWIRE is not set @@ -4392,9 +3408,8 @@ CONFIG_MEMORY=y # end of Android CONFIG_LIBNVDIMM=y -CONFIG_BLK_DEV_PMEM=m +# CONFIG_BLK_DEV_PMEM is not set CONFIG_ND_CLAIM=y -CONFIG_ND_BTT=m CONFIG_BTT=y CONFIG_DAX=y # CONFIG_DEV_DAX is not set @@ -4435,81 +3450,23 @@ CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_VALIDATE_FS_PARSER is not set CONFIG_FS_IOMAP=y CONFIG_BUFFER_HEAD=y -CONFIG_LEGACY_DIRECT_IO=y -CONFIG_EXT2_FS=m -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_POSIX_ACL=y -CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT3_FS=m -CONFIG_EXT3_FS_POSIX_ACL=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_EXT4_FS=m -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -# CONFIG_EXT4_DEBUG is not set -CONFIG_JBD2=m -# CONFIG_JBD2_DEBUG is not set -CONFIG_FS_MBCACHE=m -CONFIG_REISERFS_FS=m -# CONFIG_REISERFS_CHECK is not set -CONFIG_REISERFS_PROC_INFO=y -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -# CONFIG_REISERFS_FS_SECURITY is not set -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -# CONFIG_JFS_DEBUG is not set -CONFIG_JFS_STATISTICS=y -CONFIG_XFS_FS=m -CONFIG_XFS_SUPPORT_V4=y -CONFIG_XFS_SUPPORT_ASCII_CI=y -CONFIG_XFS_QUOTA=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_XFS_DRAIN_INTENTS=y -CONFIG_XFS_ONLINE_SCRUB=y -CONFIG_XFS_ONLINE_SCRUB_STATS=y -# CONFIG_XFS_ONLINE_REPAIR is not set -# CONFIG_XFS_WARN is not set -# CONFIG_XFS_DEBUG is not set -CONFIG_GFS2_FS=m -CONFIG_GFS2_FS_LOCKING_DLM=y -CONFIG_OCFS2_FS=m -CONFIG_OCFS2_FS_O2CB=m -CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m -CONFIG_OCFS2_FS_STATS=y -CONFIG_OCFS2_DEBUG_MASKLOG=y -# CONFIG_OCFS2_DEBUG_FS is not set -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set -# CONFIG_BTRFS_DEBUG is not set -# CONFIG_BTRFS_ASSERT is not set -# CONFIG_BTRFS_FS_REF_VERIFY is not set -CONFIG_NILFS2_FS=m -CONFIG_F2FS_FS=m -CONFIG_F2FS_STAT_FS=y -CONFIG_F2FS_FS_XATTR=y -CONFIG_F2FS_FS_POSIX_ACL=y -# CONFIG_F2FS_FS_SECURITY is not set -# CONFIG_F2FS_CHECK_FS is not set -# CONFIG_F2FS_FAULT_INJECTION is not set -CONFIG_F2FS_FS_COMPRESSION=y -CONFIG_F2FS_FS_LZO=y -CONFIG_F2FS_FS_LZORLE=y -CONFIG_F2FS_FS_LZ4=y -CONFIG_F2FS_FS_LZ4HC=y -CONFIG_F2FS_FS_ZSTD=y -CONFIG_F2FS_IOSTAT=y -CONFIG_F2FS_UNFAIR_RWSEM=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set # CONFIG_BCACHEFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y CONFIG_EXPORTFS_BLOCK_OPS=y CONFIG_FILE_LOCKING=y CONFIG_FS_ENCRYPTION=y -CONFIG_FS_ENCRYPTION_ALGS=m CONFIG_FS_VERITY=y CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y CONFIG_FSNOTIFY=y @@ -4520,14 +3477,13 @@ CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set -CONFIG_QUOTA_TREE=m -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set CONFIG_QUOTACTL=y -CONFIG_AUTOFS_FS=m +# CONFIG_AUTOFS_FS is not set CONFIG_FUSE_FS=y # CONFIG_CUSE is not set -CONFIG_VIRTIO_FS=m +# CONFIG_VIRTIO_FS is not set CONFIG_OVERLAY_FS=y # CONFIG_OVERLAY_FS_REDIRECT_DIR is not set # CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW is not set @@ -4544,39 +3500,24 @@ CONFIG_NETFS_STATS=y CONFIG_FSCACHE=y CONFIG_FSCACHE_STATS=y # CONFIG_FSCACHE_DEBUG is not set -CONFIG_CACHEFILES=m -# CONFIG_CACHEFILES_DEBUG is not set -# CONFIG_CACHEFILES_ERROR_INJECTION is not set -# CONFIG_CACHEFILES_ONDEMAND is not set +# CONFIG_CACHEFILES is not set # end of Caches # # CD-ROM/DVD Filesystems # -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set # end of CD-ROM/DVD Filesystems # # DOS/FAT/EXFAT/NT Filesystems # -CONFIG_FAT_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -# CONFIG_FAT_DEFAULT_UTF8 is not set -CONFIG_EXFAT_FS=m -CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -CONFIG_NTFS_FS=m -# CONFIG_NTFS_DEBUG is not set -CONFIG_NTFS_RW=y -CONFIG_NTFS3_FS=m -# CONFIG_NTFS3_64BIT_CLUSTER is not set -CONFIG_NTFS3_LZX_XPRESS=y -CONFIG_NTFS3_FS_POSIX_ACL=y +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set # end of DOS/FAT/EXFAT/NT Filesystems # @@ -4608,15 +3549,13 @@ CONFIG_MISC_FILESYSTEMS=y # CONFIG_ORANGEFS_FS is not set # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set -CONFIG_ECRYPT_FS=m -# CONFIG_ECRYPT_FS_MESSAGING is not set +# CONFIG_ECRYPT_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set -CONFIG_EFS_FS=m -CONFIG_CRAMFS=m -# CONFIG_CRAMFS_BLOCKDEV is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y # CONFIG_SQUASHFS_FILE_CACHE is not set CONFIG_SQUASHFS_FILE_DIRECT=y @@ -4640,20 +3579,16 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_QNX6FS_FS is not set -CONFIG_ROMFS_FS=m -CONFIG_ROMFS_BACKED_BY_BLOCK=y -CONFIG_ROMFS_ON_BLOCK=y +# CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 CONFIG_PSTORE_COMPRESS=y # CONFIG_PSTORE_CONSOLE is not set # CONFIG_PSTORE_PMSG is not set -CONFIG_PSTORE_RAM=m +# CONFIG_PSTORE_RAM is not set # CONFIG_PSTORE_BLK is not set -CONFIG_SYSV_FS=m -CONFIG_UFS_FS=m -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_UFS_DEBUG is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set CONFIG_EROFS_FS=y # CONFIG_EROFS_FS_DEBUG is not set CONFIG_EROFS_FS_XATTR=y @@ -4664,70 +3599,12 @@ CONFIG_EROFS_FS_ZIP_LZMA=y CONFIG_EROFS_FS_ZIP_DEFLATE=y CONFIG_EROFS_FS_PCPU_KTHREAD=y CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI=y -CONFIG_VBOXSF_FS=m CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=m -CONFIG_NFS_V2=m -CONFIG_NFS_V3=m -# CONFIG_NFS_V3_ACL is not set -CONFIG_NFS_V4=m -# CONFIG_NFS_SWAP is not set -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_PNFS_FILE_LAYOUT=m -CONFIG_PNFS_BLOCK=m -CONFIG_PNFS_FLEXFILE_LAYOUT=m -CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" -# CONFIG_NFS_V4_1_MIGRATION is not set -CONFIG_NFS_V4_SECURITY_LABEL=y -CONFIG_NFS_FSCACHE=y -# CONFIG_NFS_USE_LEGACY_DNS is not set -CONFIG_NFS_USE_KERNEL_DNS=y -CONFIG_NFS_DISABLE_UDP_SUPPORT=y -CONFIG_NFS_V4_2_READ_PLUS=y -CONFIG_NFSD=m -# CONFIG_NFSD_V2 is not set -# CONFIG_NFSD_V3_ACL is not set -CONFIG_NFSD_V4=y -CONFIG_NFSD_PNFS=y -CONFIG_NFSD_BLOCKLAYOUT=y -CONFIG_NFSD_SCSILAYOUT=y -CONFIG_NFSD_FLEXFILELAYOUT=y -# CONFIG_NFSD_V4_2_INTER_SSC is not set -# CONFIG_NFSD_V4_SECURITY_LABEL is not set -CONFIG_GRACE_PERIOD=m -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_NFS_COMMON=y -CONFIG_NFS_V4_2_SSC_HELPER=y -CONFIG_SUNRPC=m -CONFIG_SUNRPC_GSS=m -CONFIG_SUNRPC_BACKCHANNEL=y -CONFIG_RPCSEC_GSS_KRB5=m -CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y -# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set -# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2 is not set -# CONFIG_SUNRPC_DEBUG is not set -CONFIG_CEPH_FS=m -CONFIG_CEPH_FSCACHE=y -CONFIG_CEPH_FS_POSIX_ACL=y -# CONFIG_CEPH_FS_SECURITY_LABEL is not set -CONFIG_CIFS=m -# CONFIG_CIFS_STATS2 is not set -CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y -CONFIG_CIFS_UPCALL=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -CONFIG_CIFS_DEBUG=y -# CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_CIFS_SWN_UPCALL=y -CONFIG_CIFS_FSCACHE=y -CONFIG_SMB_SERVER=m -CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y -# CONFIG_SMB_SERVER_KERBEROS5 is not set -CONFIG_SMBFS=m +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set CONFIG_9P_FS=y @@ -4736,58 +3613,56 @@ CONFIG_9P_FS_POSIX_ACL=y # CONFIG_9P_FS_SECURITY is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=m -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_NLS_MAC_ROMAN=m -CONFIG_NLS_MAC_CELTIC=m -CONFIG_NLS_MAC_CENTEURO=m -CONFIG_NLS_MAC_CROATIAN=m -CONFIG_NLS_MAC_CYRILLIC=m -CONFIG_NLS_MAC_GAELIC=m -CONFIG_NLS_MAC_GREEK=m -CONFIG_NLS_MAC_ICELAND=m -CONFIG_NLS_MAC_INUIT=m -CONFIG_NLS_MAC_ROMANIAN=m -CONFIG_NLS_MAC_TURKISH=m -CONFIG_NLS_UTF8=m -CONFIG_NLS_UCS2_UTILS=m -CONFIG_DLM=m -# CONFIG_DLM_DEBUG is not set +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set # CONFIG_UNICODE is not set CONFIG_IO_WQ=y # end of File systems @@ -4799,14 +3674,12 @@ CONFIG_KEYS=y # CONFIG_KEYS_REQUEST_CACHE is not set # CONFIG_PERSISTENT_KEYRINGS is not set # CONFIG_TRUSTED_KEYS is not set -CONFIG_ENCRYPTED_KEYS=m -# CONFIG_USER_DECRYPTED_DATA is not set +# CONFIG_ENCRYPTED_KEYS is not set CONFIG_KEY_DH_OPERATIONS=y CONFIG_SECURITY_DMESG_RESTRICT=y CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y -# CONFIG_SECURITY_NETWORK_XFRM is not set CONFIG_SECURITY_PATH=y # CONFIG_INTEL_TXT is not set CONFIG_HARDENED_USERCOPY=y @@ -4871,12 +3744,6 @@ CONFIG_RANDSTRUCT_NONE=y # end of Kernel hardening options # end of Security options -CONFIG_XOR_BLOCKS=m -CONFIG_ASYNC_CORE=m -CONFIG_ASYNC_MEMCPY=m -CONFIG_ASYNC_XOR=m -CONFIG_ASYNC_PQ=m -CONFIG_ASYNC_RAID6_RECOV=m CONFIG_CRYPTO=y # @@ -4884,16 +3751,13 @@ CONFIG_CRYPTO=y # CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=m CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y CONFIG_CRYPTO_AKCIPHER=y CONFIG_CRYPTO_KPP2=y @@ -4901,16 +3765,13 @@ CONFIG_CRYPTO_KPP=y CONFIG_CRYPTO_ACOMP2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y -CONFIG_CRYPTO_USER=m +# CONFIG_CRYPTO_USER is not set CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_NULL=m -CONFIG_CRYPTO_NULL2=m -CONFIG_CRYPTO_PCRYPT=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_AUTHENC=m -CONFIG_CRYPTO_TEST=m -CONFIG_CRYPTO_SIMD=m -CONFIG_CRYPTO_ENGINE=m +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set # end of Crypto core or helper # @@ -4919,12 +3780,11 @@ CONFIG_CRYPTO_ENGINE=m CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_DH=y # CONFIG_CRYPTO_DH_RFC7919_GROUPS is not set -CONFIG_CRYPTO_ECC=m -CONFIG_CRYPTO_ECDH=m -CONFIG_CRYPTO_ECDSA=m +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set # CONFIG_CRYPTO_ECRDSA is not set -CONFIG_CRYPTO_SM2=m -CONFIG_CRYPTO_CURVE25519=m +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set # end of Public-key cryptography # @@ -4933,87 +3793,77 @@ CONFIG_CRYPTO_CURVE25519=m CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_TI is not set # CONFIG_CRYPTO_ARIA is not set -CONFIG_CRYPTO_BLOWFISH=m -CONFIG_CRYPTO_BLOWFISH_COMMON=m -CONFIG_CRYPTO_CAMELLIA=m -CONFIG_CRYPTO_CAST_COMMON=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_DES=m -CONFIG_CRYPTO_FCRYPT=m -CONFIG_CRYPTO_SERPENT=m -CONFIG_CRYPTO_SM4=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_SERPENT is not set # CONFIG_CRYPTO_SM4_GENERIC is not set -CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m +# CONFIG_CRYPTO_TWOFISH is not set # end of Block ciphers # # Length-preserving ciphers and modes # -CONFIG_CRYPTO_ADIANTUM=m -CONFIG_CRYPTO_CHACHA20=m +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_CHACHA20 is not set CONFIG_CRYPTO_CBC=y # CONFIG_CRYPTO_CFB is not set -CONFIG_CRYPTO_CTR=m +# CONFIG_CRYPTO_CTR is not set CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_HCTR2=m -CONFIG_CRYPTO_KEYWRAP=m -CONFIG_CRYPTO_LRW=m +# CONFIG_CRYPTO_HCTR2 is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_LRW is not set # CONFIG_CRYPTO_OFB is not set -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_XCTR=m +# CONFIG_CRYPTO_PCBC is not set CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_NHPOLY1305=m # end of Length-preserving ciphers and modes # # AEAD (authenticated encryption with associated data) ciphers # -CONFIG_CRYPTO_AEGIS128=m -CONFIG_CRYPTO_CHACHA20POLY1305=m -CONFIG_CRYPTO_CCM=m -CONFIG_CRYPTO_GCM=m -CONFIG_CRYPTO_GENIV=m -CONFIG_CRYPTO_SEQIV=m -CONFIG_CRYPTO_ECHAINIV=m -CONFIG_CRYPTO_ESSIV=m +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_ECHAINIV is not set +# CONFIG_CRYPTO_ESSIV is not set # end of AEAD (authenticated encryption with associated data) ciphers # # Hashes, digests, and MACs # -CONFIG_CRYPTO_BLAKE2B=m -CONFIG_CRYPTO_CMAC=m -CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_BLAKE2B is not set +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_GHASH is not set CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_MD4=m +# CONFIG_CRYPTO_MD4 is not set CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_MICHAEL_MIC=m -CONFIG_CRYPTO_POLYVAL=m -CONFIG_CRYPTO_POLY1305=m -CONFIG_CRYPTO_RMD160=m +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_RMD160 is not set CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA3=m -CONFIG_CRYPTO_SM3=m +# CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_SM3_GENERIC is not set # CONFIG_CRYPTO_STREEBOG is not set -CONFIG_CRYPTO_VMAC=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_XXHASH=m +# CONFIG_CRYPTO_VMAC is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_XXHASH is not set # end of Hashes, digests, and MACs # # CRCs (cyclic redundancy checks) # CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_CRC32=m +# CONFIG_CRYPTO_CRC32 is not set CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_CRC64_ROCKSOFT=m # end of CRCs (cyclic redundancy checks) # @@ -5022,38 +3872,27 @@ CONFIG_CRYPTO_CRC64_ROCKSOFT=m CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y # CONFIG_CRYPTO_842 is not set -CONFIG_CRYPTO_LZ4=m -CONFIG_CRYPTO_LZ4HC=m +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set # CONFIG_CRYPTO_ZSTD is not set # end of Compression # # Random number generation # -CONFIG_CRYPTO_ANSI_CPRNG=m -CONFIG_CRYPTO_DRBG_MENU=m -CONFIG_CRYPTO_DRBG_HMAC=y -# CONFIG_CRYPTO_DRBG_HASH is not set -# CONFIG_CRYPTO_DRBG_CTR is not set -CONFIG_CRYPTO_DRBG=m -CONFIG_CRYPTO_JITTERENTROPY=m -CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 -CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 -CONFIG_CRYPTO_JITTERENTROPY_OSR=1 +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_JITTERENTROPY is not set CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation # # Userspace interface # -CONFIG_CRYPTO_USER_API=m -CONFIG_CRYPTO_USER_API_HASH=m -CONFIG_CRYPTO_USER_API_SKCIPHER=m -CONFIG_CRYPTO_USER_API_RNG=m -# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set -CONFIG_CRYPTO_USER_API_AEAD=m -# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set -# CONFIG_CRYPTO_STATS is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set # end of Userspace interface CONFIG_CRYPTO_HASH_INFO=y @@ -5061,65 +3900,58 @@ CONFIG_CRYPTO_HASH_INFO=y # # Accelerated Cryptographic Algorithms for CPU (x86) # -CONFIG_CRYPTO_CURVE25519_X86=m -CONFIG_CRYPTO_AES_NI_INTEL=m -CONFIG_CRYPTO_BLOWFISH_X86_64=m -CONFIG_CRYPTO_CAMELLIA_X86_64=m -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m -CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m -CONFIG_CRYPTO_CAST5_AVX_X86_64=m -CONFIG_CRYPTO_CAST6_AVX_X86_64=m +# CONFIG_CRYPTO_CURVE25519_X86 is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set +# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set # CONFIG_CRYPTO_DES3_EDE_X86_64 is not set -CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m -CONFIG_CRYPTO_SERPENT_AVX_X86_64=m -CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m -CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64=m -CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64=m -CONFIG_CRYPTO_TWOFISH_X86_64=m -CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m -CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set +# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set +# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set +# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64 is not set +# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set +# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set # CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64 is not set # CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64 is not set # CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64 is not set -CONFIG_CRYPTO_CHACHA20_X86_64=m -CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +# CONFIG_CRYPTO_CHACHA20_X86_64 is not set +# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set # CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set # CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set CONFIG_CRYPTO_BLAKE2S_X86=y # CONFIG_CRYPTO_POLYVAL_CLMUL_NI is not set -CONFIG_CRYPTO_POLY1305_X86_64=m -CONFIG_CRYPTO_SHA1_SSSE3=m -CONFIG_CRYPTO_SHA256_SSSE3=m -CONFIG_CRYPTO_SHA512_SSSE3=m +# CONFIG_CRYPTO_POLY1305_X86_64 is not set +# CONFIG_CRYPTO_SHA1_SSSE3 is not set +# CONFIG_CRYPTO_SHA256_SSSE3 is not set +# CONFIG_CRYPTO_SHA512_SSSE3 is not set # CONFIG_CRYPTO_SM3_AVX_X86_64 is not set -CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m -CONFIG_CRYPTO_CRC32C_INTEL=m -CONFIG_CRYPTO_CRC32_PCLMUL=m -CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set # end of Accelerated Cryptographic Algorithms for CPU (x86) CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_DEV_PADLOCK=m -CONFIG_CRYPTO_DEV_PADLOCK_AES=m -CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +# CONFIG_CRYPTO_DEV_PADLOCK is not set # CONFIG_CRYPTO_DEV_ATMEL_ECC is not set # CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set CONFIG_CRYPTO_DEV_CCP=y -CONFIG_CRYPTO_DEV_CCP_DD=m -CONFIG_CRYPTO_DEV_SP_CCP=y -CONFIG_CRYPTO_DEV_CCP_CRYPTO=m -CONFIG_CRYPTO_DEV_SP_PSP=y -# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +# CONFIG_CRYPTO_DEV_CCP_DD is not set # CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set -CONFIG_CRYPTO_DEV_QAT=m # CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set # CONFIG_CRYPTO_DEV_QAT_C3XXX is not set # CONFIG_CRYPTO_DEV_QAT_C62X is not set -CONFIG_CRYPTO_DEV_QAT_4XXX=m -CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set # CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set -CONFIG_CRYPTO_DEV_VIRTIO=m +# CONFIG_CRYPTO_DEV_VIRTIO is not set # CONFIG_CRYPTO_DEV_SAFEXCEL is not set # CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set CONFIG_ASYMMETRIC_KEY_TYPE=y @@ -5149,14 +3981,12 @@ CONFIG_BINARY_PRINTF=y # # Library routines # -CONFIG_RAID6_PQ=m -CONFIG_RAID6_PQ_BENCHMARK=y # CONFIG_PACKING is not set CONFIG_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y -CONFIG_CORDIC=m +# CONFIG_CORDIC is not set # CONFIG_PRIME_NUMBERS is not set CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y @@ -5169,50 +3999,39 @@ CONFIG_ARCH_USE_SYM_ANNOTATIONS=y # CONFIG_CRYPTO_LIB_UTILS=y CONFIG_CRYPTO_LIB_AES=y -CONFIG_CRYPTO_LIB_ARC4=m -CONFIG_CRYPTO_LIB_GF128MUL=m CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m -CONFIG_CRYPTO_LIB_CHACHA=m -CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m -CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m -CONFIG_CRYPTO_LIB_CURVE25519=m -CONFIG_CRYPTO_LIB_DES=m +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 -CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m -CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m -CONFIG_CRYPTO_LIB_POLY1305=m -CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set CONFIG_CRYPTO_LIB_SHA1=y CONFIG_CRYPTO_LIB_SHA256=y # end of Crypto library routines -CONFIG_CRC_CCITT=m -CONFIG_CRC16=m +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set CONFIG_CRC_T10DIF=y -CONFIG_CRC64_ROCKSOFT=m -CONFIG_CRC_ITU_T=m +# CONFIG_CRC64_ROCKSOFT is not set +# CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC32_SELFTEST is not set CONFIG_CRC32_SLICEBY8=y # CONFIG_CRC32_SLICEBY4 is not set # CONFIG_CRC32_SARWATE is not set # CONFIG_CRC32_BIT is not set -CONFIG_CRC64=m +# CONFIG_CRC64 is not set # CONFIG_CRC4 is not set -CONFIG_CRC7=m +# CONFIG_CRC7 is not set CONFIG_LIBCRC32C=y -CONFIG_CRC8=m +# CONFIG_CRC8 is not set CONFIG_XXHASH=y # CONFIG_RANDOM32_SELFTEST is not set CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_COMPRESS=m -CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMPRESS=y @@ -5233,18 +4052,9 @@ CONFIG_DECOMPRESS_XZ=y CONFIG_DECOMPRESS_LZO=y CONFIG_DECOMPRESS_LZ4=y CONFIG_DECOMPRESS_ZSTD=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_REED_SOLOMON=m -CONFIG_REED_SOLOMON_ENC8=y -CONFIG_REED_SOLOMON_DEC8=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m CONFIG_INTERVAL_TREE=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y -CONFIG_CLOSURES=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y @@ -5265,20 +4075,17 @@ CONFIG_DQL=y CONFIG_GLOB=y # CONFIG_GLOB_SELFTEST is not set CONFIG_NLATTR=y -CONFIG_LRU_CACHE=m CONFIG_CLZ_TAB=y CONFIG_IRQ_POLL=y CONFIG_MPILIB=y -CONFIG_DIMLIB=y CONFIG_OID_REGISTRY=y CONFIG_UCS2_STRING=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y +CONFIG_FONT_AUTOSELECT=y CONFIG_SG_POOL=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_MEMREGION=y @@ -5329,11 +4136,6 @@ CONFIG_DEBUG_INFO_COMPRESSED_NONE=y # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set # CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set # CONFIG_DEBUG_INFO_SPLIT is not set -CONFIG_DEBUG_INFO_BTF=y -CONFIG_PAHOLE_HAS_SPLIT_BTF=y -CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y -CONFIG_DEBUG_INFO_BTF_MODULES=y -# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set # CONFIG_GDB_SCRIPTS is not set CONFIG_FRAME_WARN=1280 # CONFIG_STRIP_ASM_SYMS is not set @@ -5491,7 +4293,6 @@ CONFIG_DEBUG_LIST=y # CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_DEBUG_CLOSURES is not set # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures @@ -5552,7 +4353,6 @@ CONFIG_FTRACE_SYSCALLS=y CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set # CONFIG_BLK_DEV_IO_TRACE is not set -CONFIG_PROBE_EVENTS_BTF_ARGS=y CONFIG_KPROBE_EVENTS=y CONFIG_UPROBE_EVENTS=y CONFIG_BPF_EVENTS=y @@ -5616,7 +4416,6 @@ CONFIG_CC_HAS_SANCOV_TRACE_PC=y # CONFIG_RUNTIME_TESTING_MENU is not set CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set -# CONFIG_HYPERV_TESTING is not set # end of Kernel Testing and Coverage #