Skip to content

Commit 0d36beb

Browse files
stlankesmkroening
authored andcommitted
build(deps): upgrade arm-gic to 0.5
1 parent be0a653 commit 0d36beb

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ memory_addresses = { version = "0.2.3", default-features = false, features = [
166166

167167
[target.'cfg(target_arch = "aarch64")'.dependencies]
168168
aarch64 = { version = "0.0.14", default-features = false }
169-
arm-gic = { version = "0.4" }
169+
arm-gic = { version = "0.5" }
170170
hermit-dtb = { version = "0.1" }
171171
semihosting = { version = "0.1", optional = true }
172172
memory_addresses = { version = "0.2.3", default-features = false, features = [

src/arch/aarch64/kernel/interrupts.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use core::sync::atomic::{AtomicU64, Ordering};
66

77
use aarch64::regs::*;
88
use ahash::RandomState;
9-
use arm_gic::gicv3::{GicV3, SgiTarget};
9+
use arm_gic::gicv3::{GicV3, InterruptGroup, SgiTarget, SgiTargetGroup};
1010
use arm_gic::{IntId, Trigger};
1111
use hashbrown::HashMap;
1212
use hermit_dtb::Dtb;
@@ -115,7 +115,7 @@ pub(crate) fn install_handlers() {
115115

116116
#[unsafe(no_mangle)]
117117
pub(crate) extern "C" fn do_fiq(_state: &State) -> *mut usize {
118-
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt() {
118+
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt(InterruptGroup::Group1) {
119119
let vector: u8 = u32::from(irqid).try_into().unwrap();
120120

121121
debug!("Receive fiq {vector}");
@@ -131,7 +131,7 @@ pub(crate) extern "C" fn do_fiq(_state: &State) -> *mut usize {
131131
crate::executor::run();
132132
core_scheduler().handle_waiting_tasks();
133133

134-
GicV3::end_interrupt(irqid);
134+
GicV3::end_interrupt(irqid, InterruptGroup::Group1);
135135

136136
return core_scheduler().scheduler().unwrap_or_default();
137137
}
@@ -141,7 +141,7 @@ pub(crate) extern "C" fn do_fiq(_state: &State) -> *mut usize {
141141

142142
#[unsafe(no_mangle)]
143143
pub(crate) extern "C" fn do_irq(_state: &State) -> *mut usize {
144-
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt() {
144+
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt(InterruptGroup::Group1) {
145145
let vector: u8 = u32::from(irqid).try_into().unwrap();
146146

147147
debug!("Receive interrupt {vector}");
@@ -157,7 +157,7 @@ pub(crate) extern "C" fn do_irq(_state: &State) -> *mut usize {
157157
crate::executor::run();
158158
core_scheduler().handle_waiting_tasks();
159159

160-
GicV3::end_interrupt(irqid);
160+
GicV3::end_interrupt(irqid, InterruptGroup::Group1);
161161

162162
return core_scheduler().scheduler().unwrap_or_default();
163163
}
@@ -188,8 +188,8 @@ pub(crate) extern "C" fn do_sync(state: &State) {
188188
error!("Table Base Register {:#x}", TTBR0_EL1.get());
189189
error!("Exception Syndrome Register {esr:#x}");
190190

191-
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt() {
192-
GicV3::end_interrupt(irqid);
191+
if let Some(irqid) = GicV3::get_and_acknowledge_interrupt(InterruptGroup::Group1) {
192+
GicV3::end_interrupt(irqid, InterruptGroup::Group1);
193193
} else {
194194
error!("Unable to acknowledge interrupt!");
195195
}
@@ -237,6 +237,7 @@ pub fn wakeup_core(core_id: CoreId) {
237237
affinity1: 0,
238238
target_list: 1 << core_id,
239239
},
240+
SgiTargetGroup::CurrentGroup1,
240241
);
241242
}
242243

src/scheduler/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ impl PerCoreSchedulerExt for &mut PerCoreScheduler {
141141
use core::arch::asm;
142142

143143
use arm_gic::IntId;
144-
use arm_gic::gicv3::{GicV3, SgiTarget};
144+
use arm_gic::gicv3::{GicV3, SgiTarget, SgiTargetGroup};
145145

146146
use crate::interrupts::SGI_RESCHED;
147147

@@ -163,6 +163,7 @@ impl PerCoreSchedulerExt for &mut PerCoreScheduler {
163163
affinity1: 0,
164164
target_list: 1 << core_id,
165165
},
166+
SgiTargetGroup::CurrentGroup1,
166167
);
167168

168169
interrupts::enable();

0 commit comments

Comments
 (0)