diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2018-10-05 11:29:33 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-10 17:07:55 -0700 |
commit | 9357ceab6ac207498fc2cff4be70aa6975e9c79f (patch) | |
tree | e884632d42b9e48c173d6d4555a4434f37a63606 /x86_64 | |
parent | c968aa995a596f94e6e73d8cf80e9ced6e48f9b5 (diff) | |
download | crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar.gz crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar.bz2 crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar.lz crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar.xz crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.tar.zst crosvm-9357ceab6ac207498fc2cff4be70aa6975e9c79f.zip |
mptable: mark PCI interrupts as edge triggered
BUG=chromium:854766 TEST=Boot crosvm on an x86_64 platform (nami) Change-Id: Id55975a443a54e8b9c25616cd842507c57802af0 Signed-off-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1265047 Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'x86_64')
-rw-r--r-- | x86_64/src/mptable.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/x86_64/src/mptable.rs b/x86_64/src/mptable.rs index b7842b0..7587bb7 100644 --- a/x86_64/src/mptable.rs +++ b/x86_64/src/mptable.rs @@ -85,6 +85,7 @@ const CPU_STEPPING: u32 = 0x600; const CPU_FEATURE_APIC: u32 = 0x200; const CPU_FEATURE_FPU: u32 = 0x001; const MPTABLE_START: u64 = 0x400 * 639; // Last 1k of Linux's 640k base RAM. +const MP_IRQTRIG_EDGE: u16 = 4; fn compute_checksum<T: Copy>(v: &T) -> u8 { // Safe because we are only reading the bytes within the size of the `T` reference `v`. @@ -250,7 +251,7 @@ pub fn setup_mptable( let mut mpc_intsrc = mpc_intsrc::default(); mpc_intsrc.type_ = MP_INTSRC as u8; mpc_intsrc.irqtype = mp_irq_source_types_mp_INT as u8; - mpc_intsrc.irqflag = MP_IRQDIR_DEFAULT as u16; + mpc_intsrc.irqflag = MP_IRQTRIG_EDGE | MP_IRQDIR_DEFAULT as u16; mpc_intsrc.srcbus = PCI_BUS_ID; mpc_intsrc.srcbusirq = (pci_irq.0 as u8 + 1) << 2 | pci_irq.1.to_mask() as u8; mpc_intsrc.dstapic = ioapicid; |