Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 30524
b: refs/heads/master
c: 704fc59
h: refs/heads/master
v: v3
  • Loading branch information
Siddha, Suresh B authored and Linus Torvalds committed Jun 26, 2006
1 parent 19af4c0 commit e97d6a9
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 03fdc2c277afdbd217eccd1ce0cfeff77ebd8b77
refs/heads/master: 704fc59e1d056de80beaf30174bc8e0b1682efbb
15 changes: 13 additions & 2 deletions trunk/arch/i386/kernel/apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ void clear_local_APIC(void)
maxlvt = get_maxlvt();

/*
* Masking an LVT entry on a P6 can trigger a local APIC error
* Masking an LVT entry can trigger a local APIC error
* if the vector is zero. Mask LVTERR first to prevent this.
*/
if (maxlvt >= 3) {
Expand Down Expand Up @@ -1118,7 +1118,18 @@ void disable_APIC_timer(void)
unsigned long v;

v = apic_read(APIC_LVTT);
apic_write_around(APIC_LVTT, v | APIC_LVT_MASKED);
/*
* When an illegal vector value (0-15) is written to an LVT
* entry and delivery mode is Fixed, the APIC may signal an
* illegal vector error, with out regard to whether the mask
* bit is set or whether an interrupt is actually seen on input.
*
* Boot sequence might call this function when the LVTT has
* '0' vector value. So make sure vector field is set to
* valid value.
*/
v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
apic_write_around(APIC_LVTT, v);
}
}

Expand Down
15 changes: 13 additions & 2 deletions trunk/arch/x86_64/kernel/apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ void clear_local_APIC(void)
maxlvt = get_maxlvt();

/*
* Masking an LVT entry on a P6 can trigger a local APIC error
* Masking an LVT entry can trigger a local APIC error
* if the vector is zero. Mask LVTERR first to prevent this.
*/
if (maxlvt >= 3) {
Expand Down Expand Up @@ -851,7 +851,18 @@ void disable_APIC_timer(void)
unsigned long v;

v = apic_read(APIC_LVTT);
apic_write(APIC_LVTT, v | APIC_LVT_MASKED);
/*
* When an illegal vector value (0-15) is written to an LVT
* entry and delivery mode is Fixed, the APIC may signal an
* illegal vector error, with out regard to whether the mask
* bit is set or whether an interrupt is actually seen on input.
*
* Boot sequence might call this function when the LVTT has
* '0' vector value. So make sure vector field is set to
* valid value.
*/
v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
apic_write(APIC_LVTT, v);
}
}

Expand Down

0 comments on commit e97d6a9

Please sign in to comment.