blob: f068d8d44de2c65304845dbcd9c119a990c33419 [file] [log] [blame]
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"