diff --git a/tee/kernel/src/char_dev/mushroom.rs b/tee/kernel/src/char_dev/mushroom.rs index 2c2f15f9..8be2b35c 100644 --- a/tee/kernel/src/char_dev/mushroom.rs +++ b/tee/kernel/src/char_dev/mushroom.rs @@ -88,7 +88,7 @@ impl OpenFileDescription for Output { let mut addr = pointer.get(); let mut remaining_len = len; while remaining_len > 0 { - let buffer_len = cmp::min(remaining_len, 0x1000); + let buffer_len = cmp::min(remaining_len, supervisor::OUTPUT_BUFFER_CAPACITY); let mut buf = [0; supervisor::OUTPUT_BUFFER_CAPACITY]; let buf = &mut buf[..buffer_len]; diff --git a/tee/supervisor-snp/src/ap.rs b/tee/supervisor-snp/src/ap.rs index c27f06a4..5bd3cf0e 100644 --- a/tee/supervisor-snp/src/ap.rs +++ b/tee/supervisor-snp/src/ap.rs @@ -18,7 +18,7 @@ use crate::{ ghcb::{create_ap, exit, run_vmpl, vmsa_tweak_bitmap}, output, per_cpu::PerCpu, - scheduler::{start_next_ap, TIMER_VECTOR, WAKE_UP_VECTOR}, + scheduler::{start_next_ap, STARTUP_VECTOR, TIMER_VECTOR, WAKE_UP_VECTOR}, }; use self::vmsa::Vmpl1Vmsa; @@ -56,6 +56,7 @@ pub fn run_vcpu() -> ! { if PerCpu::get().interrupted.swap(false, Ordering::SeqCst) { while let Some(vector) = pop_pending_event() { match vector.get() { + STARTUP_VECTOR => eoi(), WAKE_UP_VECTOR => eoi(), TIMER_VECTOR => { requested_timer_irq = true; @@ -72,7 +73,7 @@ pub fn run_vcpu() -> ! { } // See if the kernel was kicked. - if halted && WAKEUP_TOKEN.get(PerCpu::current_vcpu_index()) { + if halted && WAKEUP_TOKEN.take(PerCpu::current_vcpu_index()) { halted = false; }