diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs b/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs index b67fac6f40..a0bea46731 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs @@ -1,5 +1,34 @@ use log::warn; +const GMD_ID_MMIO: usize = 0x138040; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct GmdId { + pub render_version: u16, + pub media_version: u16, + pub display_version: u16, +} + +impl GmdId { + pub fn read(mmio: &redox_driver_sys::memory::MmioRegion) -> Option { + let val = mmio.read32(GMD_ID_MMIO); + if val == 0 || val == 0xFFFF_FFFF { + return None; + } + let render = ((val >> 0) & 0xFF) as u16; + let media = ((val >> 8) & 0xFF) as u16; + let display = ((val >> 16) & 0xFF) as u16; + if render == 0 && media == 0 && display == 0 { + return None; + } + Some(Self { + render_version: render, + media_version: media, + display_version: display, + }) + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum IntelGeneration { Gen4, @@ -77,6 +106,9 @@ pub struct IntelDeviceInfo { pub guc_fw_key: Option<&'static str>, pub has_guc: bool, pub platform_name: &'static str, + pub stepping: u8, + pub num_eus: u8, + pub num_subslices: u8, } impl IntelDeviceInfo { @@ -102,74 +134,97 @@ struct DeviceIdEntry { platform_name: &'static str, dmc_fw_key: Option<&'static str>, guc_fw_key: Option<&'static str>, + num_eus: u8, } const DEVICE_ID_TABLE: &[DeviceIdEntry] = &[ - DeviceIdEntry { device_id: 0x1912, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x1916, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x191B, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x191D, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x191E, gen: IntelGeneration::Gen9, platform_name: "Skylake ULX GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x1921, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x1923, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x1926, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT3", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x1927, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT3", dmc_fw_key: Some("SKL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5912, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5916, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x591B, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x591D, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5921, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5923, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5926, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT3", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x5927, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT3", dmc_fw_key: Some("KBL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E90, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E91, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E92, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E96, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E98, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3E9A, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3EA5, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3EA6, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3EA7, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x3EA8, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x8A56, gen: IntelGeneration::Gen9_5, platform_name: "Ice Lake ULT GT2", dmc_fw_key: Some("ICL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x8A52, gen: IntelGeneration::Gen9_5, platform_name: "Ice Lake ULT GT2", dmc_fw_key: Some("ICL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x4500, gen: IntelGeneration::Gen9_5, platform_name: "Elkhart Lake", dmc_fw_key: Some("EHL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x4571, gen: IntelGeneration::Gen9_5, platform_name: "Elkhart Lake", dmc_fw_key: Some("EHL"), guc_fw_key: None }, - DeviceIdEntry { device_id: 0x9A49, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake ULT GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL") }, - DeviceIdEntry { device_id: 0x9A40, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake ULT GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL") }, - DeviceIdEntry { device_id: 0x9A78, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake H GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL") }, - DeviceIdEntry { device_id: 0x46A6, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP") }, - DeviceIdEntry { device_id: 0x4626, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP") }, - DeviceIdEntry { device_id: 0x46A8, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP") }, - DeviceIdEntry { device_id: 0x4628, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP") }, - DeviceIdEntry { device_id: 0x46B3, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP") }, - DeviceIdEntry { device_id: 0x5690, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G10", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2") }, - DeviceIdEntry { device_id: 0x5698, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G11", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2") }, - DeviceIdEntry { device_id: 0x56A0, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G12", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2") }, - DeviceIdEntry { device_id: 0x7D55, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL") }, - DeviceIdEntry { device_id: 0x7D60, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL") }, - DeviceIdEntry { device_id: 0x7D45, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL") }, - DeviceIdEntry { device_id: 0x7D67, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL") }, - DeviceIdEntry { device_id: 0x7D41, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-U", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL") }, - DeviceIdEntry { device_id: 0x7D51, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-P Arc Pro 130T/140T", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL") }, - DeviceIdEntry { device_id: 0x7D67, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-S", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL") }, - DeviceIdEntry { device_id: 0x7DD1, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-P", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL") }, - DeviceIdEntry { device_id: 0xB640, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-H", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL") }, - DeviceIdEntry { device_id: 0x6420, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL") }, - DeviceIdEntry { device_id: 0x64A0, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL") }, - DeviceIdEntry { device_id: 0x64B0, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL") }, - DeviceIdEntry { device_id: 0xE202, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE20B, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE20C, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE20D, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE210, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE212, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE216, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, - DeviceIdEntry { device_id: 0xE220, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG") }, + DeviceIdEntry { device_id: 0x1912, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1916, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x191B, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x191D, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x191E, gen: IntelGeneration::Gen9, platform_name: "Skylake ULX GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1921, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1923, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1926, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT3", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1927, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT3", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5912, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5916, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x591B, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x591D, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake DT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5921, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5923, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT2", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5926, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT3", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x5927, gen: IntelGeneration::Gen9, platform_name: "Kaby Lake ULT GT3", dmc_fw_key: Some("KBL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E90, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E91, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E92, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E96, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E98, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3E9A, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake DT GT2", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3EA5, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3EA6, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3EA7, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x3EA8, gen: IntelGeneration::Gen9, platform_name: "Coffee Lake ULT GT3", dmc_fw_key: Some("CFL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x8A56, gen: IntelGeneration::Gen9_5, platform_name: "Ice Lake ULT GT2", dmc_fw_key: Some("ICL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x8A52, gen: IntelGeneration::Gen9_5, platform_name: "Ice Lake ULT GT2", dmc_fw_key: Some("ICL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x4500, gen: IntelGeneration::Gen9_5, platform_name: "Elkhart Lake", dmc_fw_key: Some("EHL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x4571, gen: IntelGeneration::Gen9_5, platform_name: "Elkhart Lake", dmc_fw_key: Some("EHL"), guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x9A49, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake ULT GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x9A40, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake ULT GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x9A78, gen: IntelGeneration::Gen12, platform_name: "Tiger Lake H GT2", dmc_fw_key: Some("TGL"), guc_fw_key: Some("TGL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x46A6, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x4626, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x46A8, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x4628, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x46B3, gen: IntelGeneration::Gen12, platform_name: "Alder Lake-P GT2", dmc_fw_key: Some("ADLP"), guc_fw_key: Some("ADLP"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x5690, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G10", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x5698, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G11", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x56A0, gen: IntelGeneration::Gen12, platform_name: "DG2 Alchemist G12", dmc_fw_key: Some("DG2"), guc_fw_key: Some("DG2"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D55, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D60, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D45, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D67, gen: IntelGeneration::Gen12_7, platform_name: "Meteor Lake", dmc_fw_key: Some("MTL"), guc_fw_key: Some("MTL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D41, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-U", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D51, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-P Arc Pro 130T/140T", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7D67, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-S", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x7DD1, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-P", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xB640, gen: IntelGeneration::GenXe2, platform_name: "Arrow Lake-H", dmc_fw_key: Some("ARL"), guc_fw_key: Some("ARL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x6420, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x64A0, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0x64B0, gen: IntelGeneration::GenXe2, platform_name: "Lunar Lake", dmc_fw_key: Some("LNL"), guc_fw_key: Some("LNL"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE202, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE20B, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE20C, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE20D, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE210, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE212, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE216, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, + DeviceIdEntry { device_id: 0xE220, gen: IntelGeneration::GenXe2, platform_name: "Battlemage G21", dmc_fw_key: Some("BMG"), guc_fw_key: Some("BMG"), num_eus: 0 }, ]; pub fn device_info_from_id(device_id: u16) -> IntelDeviceInfo { + let default_info = || IntelDeviceInfo { + generation: IntelGeneration::Gen9, + display_version: 9, + gt_version: 9, + num_pipes: 3, + num_ports: 4, + has_ddi: true, + has_dp_aux: true, + has_gmbus: true, + has_dmc: true, + has_combo_phy: false, + has_dbuf_slice: false, + has_separate_transcoder: false, + dmc_fw_key: None, + guc_fw_key: None, + has_guc: false, + platform_name: "Unknown (Gen9 default)", + stepping: 0, + num_eus: 0, + num_subslices: 0, + }; + for entry in DEVICE_ID_TABLE { if entry.device_id == device_id { let gen = entry.gen; @@ -190,27 +245,13 @@ pub fn device_info_from_id(device_id: u16) -> IntelDeviceInfo { guc_fw_key: entry.guc_fw_key, has_guc: entry.guc_fw_key.is_some(), platform_name: entry.platform_name, + stepping: 0, + num_eus: entry.num_eus, + num_subslices: entry.num_eus.saturating_div(8), }; } } warn!("redox-drm: Intel device {:#06x} not in device info table — using Gen9 defaults", device_id); - IntelDeviceInfo { - generation: IntelGeneration::Gen9, - display_version: 9, - gt_version: 9, - num_pipes: 3, - num_ports: 4, - has_ddi: true, - has_dp_aux: true, - has_gmbus: true, - has_dmc: true, - has_combo_phy: false, - has_dbuf_slice: false, - has_separate_transcoder: false, - dmc_fw_key: None, - guc_fw_key: None, - has_guc: false, - platform_name: "Unknown (Gen9 default)", - } + default_info() } diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs b/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs index f464269bab..28831513ef 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs @@ -67,11 +67,7 @@ use self::display_watermark::DisplayWatermark; use self::dp_aux::DpAux; use self::execlists::ExeclistPort; use self::gmbus::GmbusController; -use self::gt::IntelGtManager; -use self::gtt::IntelGtt; -use self::guc::GucFirmware; -use self::hotplug::HotplugHandler; -use self::info::{IntelDeviceInfo, IntelGeneration, device_info_from_id}; +use self::info::{GmdId, IntelDeviceInfo, IntelGeneration, device_info_from_id}; use self::lmem::{IntelLmem, is_discrete_gpu}; use self::regs::IntelRegs; use self::regs_gen9::Gen9Regs; @@ -196,6 +192,25 @@ impl IntelDriver { let mmio = map_bar(&mut device, &mmio_bar, "Intel MMIO BAR2")?; let gtt_mmio = map_bar(&mut device, >t_bar, "Intel GGTT BAR0")?; + let mmio_arc = Arc::new(mmio); + + let stepping = info.revision_id; + let gmd_id = GmdId::read(&mmio_arc); + let mut device_info = device_info; + + device_info.stepping = stepping; + + if let Some(ref gmd) = gmd_id { + info!( + "redox-drm-intel: GMD_ID — render v{}, media v{}, display v{} (stepping {})", + gmd.render_version, gmd.media_version, gmd.display_version, stepping + ); + device_info.display_version = gmd.display_version as u8; + device_info.gt_version = gmd.render_version as u8; + } else { + info!("redox-drm-intel: no GMD_ID available (stepping {}), using static device info", stepping); + } + let lmem = if let Some(lmem_bar) = lmem_bar_info { if lmem_bar.size > 0 && lmem_bar.is_memory() { let lmem_mmio = map_bar(&mut device, &lmem_bar, "Intel LMEM BAR")?; diff --git a/recipes/core/bootloader/recipe.toml b/recipes/core/bootloader/recipe.toml index 08a588a29b..1d8069f6a3 100644 --- a/recipes/core/bootloader/recipe.toml +++ b/recipes/core/bootloader/recipe.toml @@ -4,8 +4,9 @@ path = "../../../local/sources/bootloader" [build] template = "custom" script = """ -export RUSTFLAGS="-Zunstable-options --target x86_64-unknown-redox" OUTDIR="${COOKBOOK_BUILD}" +# Override TARGET: redoxer sets x86_64-unknown-redox but bootloader needs uefi target +export TARGET="x86_64-unknown-uefi" mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot" function bootloader {