| Overall: (9 cases) |
| |
| - Test method |
| * Add cases/soft-inj/panic/cases.sh into configuration file, and invoke |
| a test driver on it. |
| - Common |
| * Test script of test cases in this file can be found in |
| cases/soft-inj/panic/cases.sh |
| |
| 1. fatal |
| |
| - Objective: |
| * Test MSR read logic of MCE handler |
| * Test synchronization between monarch and subject |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * do_machine_check() |
| * mce_start() |
| * mce_end() |
| * mce_reign() until mce_panic("Fatal Machine check",) |
| * mce_severity() |
| * mce_timeout() except if (*t <= 0) branch |
| * mce_panic() |
| * print_mce() |
| * mce_log() |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |
| 2. fatal timeout |
| |
| - Objective: |
| * Test logic of timeout during monarch/subject synchronization |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * do_machine_check() |
| * mce_start() |
| * mce_timeout() if (*t <= 0) branch |
| * mce_severity() |
| * mce_panic("Fatal machine check on current CPU",); |
| * print_mce() |
| * mce_log() |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_timeout |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal machine check on current CPU" |
| * Exception message is "Processor context corrupt" |
| * Timeout message is "Some CPUs didn't answer in synchronization" |
| |
| |
| 3. fatal in irq |
| |
| - Objective: |
| * Test fatal MCE occur in IRQ context |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * Same as fatal |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_irq |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |
| 4. fatal with RIPV |
| |
| - Objective: |
| * Test combination of PCC and RIPV |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * MCG_STATUS_RIPV branch of switch(m.mcgstatus) in do_machine_check |
| * Others are same as fatal |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_ripv |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |
| 5. fatal timeout with RIPV |
| |
| - Objective: |
| * Test timeout logic of combination of PCC and RIPV |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * MCG_STATUS_RIPV branch of switch(m.mcgstatus) in do_machine_check |
| * Others are same as fatal_timeout |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_timeout_ripv |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal machine check on current CPU" |
| * Exception message is "Processor context corrupt" |
| * Timeout message is "Some CPUs didn't answer in synchronization" |
| |
| |
| 6. fatal with OVER |
| |
| - Objective: |
| * Test OVER flag in MCI_STATUS processing |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * Same as fatal |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_over |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |
| 7. fatal and UC without EN |
| |
| - Objective: |
| * Test no EN processing. Only one MCE can be injected on one CPU, so |
| a MCE without EN are injected on other CPU. |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * Same as fatal except no EN branch in do_machine_check() |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_no_en |
| * Reference MCE records: cases/soft-inj/panic/refer/fatal_no_en |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Machine check from unknown source" |
| * No exception message |
| |
| 8. fatal with EIPV |
| |
| - Objective: |
| * Test combination of PCC and EIPV |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * Same as fatal |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_eipv |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |
| 9. fatal in userspace |
| |
| - Objective: |
| * Test of PCC in userspace |
| * Test logic to recognize a fatal (PCC) MCE |
| - Code path tested: |
| * Same as fatal |
| - Reference: |
| * Inject data file: cases/soft-inj/panic/data/fatal_eipv |
| - Expected result: |
| * No warning or bug during kernel processing. |
| * MCE records collected via kernel panic log is same as reference ones. |
| * Kernel panic message is "Fatal Machine check" |
| * Exception message is "Processor context corrupt" |
| |
| |