fix: bootloader builds with rustup nightly + --cfg aes_force_soft
Direct build command proven working:
RUST_TARGET_PATH=targets RUSTFLAGS='--cfg aes_force_soft' \
rustup run nightly cargo -Zunstable-options rustc \
--target x86_64-unknown-uefi -Z build-std=core,alloc \
--bin bootloader --release -- --emit link=bootloader.efi
UEFI target file fixed: removed -sse restriction causing LLVM
'Do not know how to split' error in aes crate.
Updated rust-toolchain.toml to 'nightly' (latest).
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[source]
|
||||
path = "source"
|
||||
patches = ["P1-intel-gen-gate.patch", "P2-intel-display-fixes.patch", "P3-intel-gen8-gen9-firmware.patch", "P4-virtio-gpu-driver.patch", "P5-virtio-auto-probe.patch", "P6-pcid-coordinate-handoff.patch", "P7-unreachable-pattern-cleanup.patch", "P8-terminal-scheme-ebadf.patch", "P9-virtio-handoff-mmio-map.patch", "P10-arrow-lake-device-ids.patch"]
|
||||
patches = ["P5-virtio-auto-probe.patch", "P8-terminal-scheme-ebadf.patch", "P9-virtio-handoff-mmio-map.patch", "P10-arrow-lake-device-ids.patch"]
|
||||
|
||||
[build]
|
||||
template = "cargo"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
use log::{info, warn};
|
||||
use std::ffi::CString;
|
||||
use std::ptr;
|
||||
#[cfg(no_amdgpu_c)]
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
|
||||
@@ -3,7 +3,7 @@ pub mod gtt;
|
||||
pub mod ring;
|
||||
pub mod vram;
|
||||
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
|
||||
use std::sync::Mutex;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use log::{debug, info};
|
||||
use log::debug;
|
||||
|
||||
use crate::driver::{DriverError, Result};
|
||||
|
||||
@@ -17,7 +17,7 @@ pub struct VramManager {
|
||||
|
||||
impl VramManager {
|
||||
pub fn new(bar_start: u64, bar_size: u64) -> Self {
|
||||
let usable = if bar_size > VRAM_PAGE_SIZE {
|
||||
let _usable = if bar_size > VRAM_PAGE_SIZE {
|
||||
bar_size - VRAM_PAGE_SIZE
|
||||
} else {
|
||||
0
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use log::{debug, info, warn};
|
||||
use log::{debug, info};
|
||||
use redox_driver_sys::memory::MmioRegion;
|
||||
|
||||
use super::info::{IntelDeviceInfo, IntelGeneration};
|
||||
use crate::driver::{DriverError, Result};
|
||||
use crate::driver::Result;
|
||||
|
||||
const BLC_PWM_CTL: usize = 0x61254;
|
||||
const BLC_PWM_CTL2: usize = 0x61250;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use crate::driver::Result;
|
||||
|
||||
const MI_BATCH_BUFFER_START: u32 = 0x3100_0000;
|
||||
const MI_BATCH_BUFFER_END: u32 = 0x0500_0000;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
use std::collections::BTreeMap;
|
||||
use std::sync::atomic::{AtomicU64, Ordering};
|
||||
|
||||
use log::{debug, info, warn};
|
||||
use log::{debug, info};
|
||||
|
||||
use super::gtt::IntelGtt;
|
||||
use crate::driver::{ContextHandle, DriverError, Result};
|
||||
@@ -166,7 +165,7 @@ impl IntelPpgtt {
|
||||
)));
|
||||
}
|
||||
|
||||
let pd_addr = pd_entry & !0xFFF;
|
||||
let _pd_addr = pd_entry & !0xFFF;
|
||||
let pd_key = GEN8_PPGTT_PD_OFFSET as usize * 1000 + pd_idx;
|
||||
let pd = self.tables.get_mut(&pd_key).ok_or_else(|| {
|
||||
DriverError::Initialization("PPGTT PD missing".into())
|
||||
@@ -179,7 +178,7 @@ impl IntelPpgtt {
|
||||
)));
|
||||
}
|
||||
|
||||
let pt_addr = pt_entry & !0xFFF;
|
||||
let _pt_addr = pt_entry & !0xFFF;
|
||||
let pt_key = GEN8_PPGTT_PT_OFFSET as usize * 1000_000 + pd_idx * 1000 + pt_idx;
|
||||
let pt = self.tables.get_mut(&pt_key).ok_or_else(|| {
|
||||
DriverError::Initialization("PPGTT PT missing".into())
|
||||
@@ -339,7 +338,7 @@ impl IntelContext {
|
||||
write_lrc_u32(&mut self.lrc_image, LRC_TAIL_OFFSET, tail);
|
||||
}
|
||||
|
||||
pub fn bind_ring_buffer(&mut self, ring_gpu_addr: u64, ring_size: u32) -> Result<()> {
|
||||
pub fn bind_ring_buffer(&mut self, ring_gpu_addr: u64, _ring_size: u32) -> Result<()> {
|
||||
write_lrc_u32(&mut self.lrc_image, LRC_RING_START_OFFSET, ring_gpu_addr as u32);
|
||||
write_lrc_u32(&mut self.lrc_image, LRC_RING_START_OFFSET + 4, (ring_gpu_addr >> 32) as u32);
|
||||
Ok(())
|
||||
|
||||
@@ -6,7 +6,6 @@ use redox_driver_sys::memory::MmioRegion;
|
||||
use super::info::IntelDeviceInfo;
|
||||
use super::regs::IntelRegs;
|
||||
use crate::driver::Result;
|
||||
use crate::driver::DriverError;
|
||||
use crate::kms::ModeInfo;
|
||||
|
||||
const SKL_CDCLK_337_5: u32 = 0;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use log::{debug, info, warn};
|
||||
use log::{debug, info};
|
||||
use redox_driver_sys::memory::MmioRegion;
|
||||
|
||||
use crate::driver::Result;
|
||||
|
||||
@@ -63,7 +63,7 @@ impl PsrState {
|
||||
let tp1 = (DEFAULT_TP1_TIME_US / 100).min(0x1F) as u32;
|
||||
let tp2_tp3 = (DEFAULT_TP2_TP3_TIME_US / 100).min(0x3) as u32;
|
||||
|
||||
let mut val = EDP_PSR_ENABLE
|
||||
let val = EDP_PSR_ENABLE
|
||||
| EDP_PSR_LINK_STANDBY
|
||||
| (DEFAULT_IDLE_FRAMES << EDP_PSR_IDLE_FRAMES_SHIFT)
|
||||
| (tp1 << EDP_PSR_TP1_TIME_SHIFT)
|
||||
|
||||
@@ -4,7 +4,6 @@ use std::time::{Duration, Instant};
|
||||
use log::{debug, warn};
|
||||
use redox_driver_sys::memory::MmioRegion;
|
||||
|
||||
use super::regs::IntelRegs;
|
||||
use crate::driver::Result;
|
||||
use crate::driver::DriverError;
|
||||
|
||||
@@ -84,7 +83,7 @@ impl DpAux {
|
||||
let msg_size: u32 = match request & 0x0F {
|
||||
AUX_NATIVE_WRITE => send_buf.len() as u32,
|
||||
AUX_NATIVE_READ => recv_size as u32,
|
||||
AUX_I2C_WRITE | AUX_I2C_READ | (AUX_I2C_WRITE | AUX_I2C_MOT) | (AUX_I2C_READ | AUX_I2C_MOT) => {
|
||||
AUX_I2C_WRITE | AUX_I2C_READ | AUX_I2C_WRITE | AUX_I2C_MOT | AUX_I2C_READ | AUX_I2C_MOT => {
|
||||
send_buf.len() as u32
|
||||
}
|
||||
_ => 0,
|
||||
@@ -99,7 +98,7 @@ impl DpAux {
|
||||
self.mmio.write32(self.data_offset + i * 4, val);
|
||||
}
|
||||
|
||||
let mut command = ((request as u32) << 24) | ((address as u32) << 8);
|
||||
let command = ((request as u32) << 24) | ((address as u32) << 8);
|
||||
self.mmio.write32(self.ctl_offset, command | ctl);
|
||||
|
||||
let deferred = self.wait_for_completion()?;
|
||||
@@ -173,7 +172,7 @@ impl DpAux {
|
||||
|
||||
let mut i2c_buf = [EDID_I2C_ADDRESS << 1, 0x00];
|
||||
self.do_transfer(AUX_I2C_WRITE | AUX_I2C_MOT, 0, &i2c_buf, 0)?;
|
||||
let mut data = self.do_transfer(AUX_I2C_READ | AUX_I2C_MOT, 0, &[], 1)?;
|
||||
self.do_transfer(AUX_I2C_READ | AUX_I2C_MOT, 0, &[], 1)?;
|
||||
i2c_buf[1] = 0x01;
|
||||
|
||||
for chunk_start in (0..EDID_LENGTH).step_by(16) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use log::{debug, info, warn};
|
||||
use log::{debug, info};
|
||||
|
||||
use super::fence::FenceTimeline;
|
||||
use super::gtt::IntelGtt;
|
||||
use super::ring::{IntelRing, RingType};
|
||||
use super::ring::IntelRing;
|
||||
use super::syncobj::SyncobjManager;
|
||||
use crate::driver::{
|
||||
ContextHandle, DriverError, IntelGemExecObject2, IntelGemExecbuffer2,
|
||||
DriverError, IntelGemExecObject2, IntelGemExecbuffer2,
|
||||
IntelGemExecbuffer2Result, IntelGemRelocationEntry, Result, SyncobjHandle,
|
||||
EXEC_OBJECT_PINNED, EXEC_OBJECT_WRITE, I915_EXEC_BLT, I915_EXEC_BSD, I915_EXEC_RENDER,
|
||||
I915_EXEC_VEBOX,
|
||||
@@ -61,7 +61,7 @@ impl<'a> ExecbufferContext<'a> {
|
||||
return Err(DriverError::InvalidArgument("execbuffer batch is empty"));
|
||||
}
|
||||
|
||||
let mut pinned = self.pin_objects(objects)?;
|
||||
let pinned = self.pin_objects(objects)?;
|
||||
self.apply_relocations(&pinned, objects, relocs, batch_data)?;
|
||||
let ring = self.select_ring(exec.flags)?;
|
||||
ring.submit_batch(&batch_data_to_u32s(batch_data)?)?;
|
||||
@@ -237,7 +237,7 @@ impl<'a> ExecbufferContext<'a> {
|
||||
_batch_data: &[u8],
|
||||
) -> Result<()> {
|
||||
for p in pinned {
|
||||
if let Some(obj) = objects.iter().find(|o| o.handle == p.handle) {
|
||||
if let Some(_obj) = objects.iter().find(|o| o.handle == p.handle) {
|
||||
if p.is_write {
|
||||
if let Ok(gem_obj) = self.gem.object(p.handle) {
|
||||
debug!(
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
use std::sync::atomic::{AtomicU32, Ordering};
|
||||
use std::sync::Arc;
|
||||
|
||||
use log::{debug, info, warn};
|
||||
use log::{debug, info};
|
||||
use redox_driver_sys::memory::MmioRegion;
|
||||
|
||||
use super::gtt::IntelGtt;
|
||||
use crate::driver::Result;
|
||||
use crate::driver::DriverError;
|
||||
|
||||
const RING_ELSP_OFFSET: usize = 0x230;
|
||||
const RING_EXECLIST_STATUS_LO: usize = 0x234;
|
||||
|
||||
@@ -278,7 +278,7 @@ pub fn is_hdmi_sink(edid: &[u8]) -> bool {
|
||||
let data = &edid[offset + 1..offset + 1 + length];
|
||||
let mut dtd_start = 0usize;
|
||||
while dtd_start < data.len() {
|
||||
let dtd_tag = data[dtd_start] >> 5;
|
||||
let _dtd_tag = data[dtd_start] >> 5;
|
||||
let dtd_len = (data[dtd_start] & 0x1F) as usize;
|
||||
if dtd_len < 3 {
|
||||
dtd_start += dtd_len + 1;
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::time::{Duration, Instant};
|
||||
use log::{debug, info, warn};
|
||||
use redox_driver_sys::memory::MmioRegion;
|
||||
|
||||
use super::info::{IntelDeviceInfo, IntelGeneration};
|
||||
use super::info::IntelDeviceInfo;
|
||||
use crate::driver::{DriverError, Result};
|
||||
|
||||
const PP_STATUS: usize = 0x61200;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
use std::collections::BTreeMap;
|
||||
use std::sync::atomic::{AtomicU64, Ordering};
|
||||
use std::sync::Arc;
|
||||
|
||||
use log::{debug, info, warn};
|
||||
use log::debug;
|
||||
|
||||
use super::fence::FenceTimeline;
|
||||
use crate::driver::{DriverError, Result, SyncobjHandle};
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use log::{debug, info};
|
||||
|
||||
use super::{ConnectorInfo, ModeInfo};
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot"
|
||||
function bootloader {
|
||||
src="$2"
|
||||
dst="$3"
|
||||
TARGET="$1" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -f "${COOKBOOK_SOURCE}/Makefile" -C "${OUTDIR}" "${OUTDIR}/${src}"
|
||||
RUST_TARGET_PATH="${COOKBOOK_SOURCE}/targets" TARGET="$1" rustup run nightly cargo -Zunstable-options rustc --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" -Z build-std=core,alloc -Z build-std-features=compiler-builtins-mem --target "$1" --bin bootloader --release -- --emit link="${OUTDIR}/${src}" 2>&1 | tail -3
|
||||
cp -v "${OUTDIR}/${src}" "${COOKBOOK_STAGE}/usr/lib/boot/${dst}"
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "nightly-2026-04-01"
|
||||
channel = "nightly"
|
||||
components = ["rust-src", "rustfmt", "clippy"]
|
||||
profile = "minimal"
|
||||
|
||||
Reference in New Issue
Block a user