Overall: (6 cases) - Test method * Add cases/soft-inj/panic_ucr/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_ucr/cases.sh 1. s0_ar1 - Objective: * Test MSR read logic of MCE handler * Test synchronization between monarch and subject - Code path tested: * do_machine_check() * mce_start() * mce_timeout() except if (*t <= 0) branch * mce_log() * mce_end() * mce_severity() * mce_reign() until mce_panic("Fatal Machine check",) * mce_panic() * print_mce() - Reference: * Inject data file: cases/soft-inj/panic_ucr/data/s0_ar1 - 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 "Illegal combination (UCNA with AR=1)" 2. srar_over - Objective: * Test logic of timeout during monarch/subject synchronization - Code path tested: * do_machine_check() * mce_start() * mce_timeout() except if (*t <= 0) branch * mce_log() * mce_end() * mce_severity() * mce_reign() until mce_panic("Fatal Machine check",) * mce_panic(); * print_mce() - Reference: * Inject data file: cases/soft-inj/panic_ucr/data/srar_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 "Action required with lost events" 3. srar_unknown - Objective: * Test fatal MCE occur in IRQ context - Code path tested: * do_machine_check() * mce_start() * mce_timeout() except if (*t <= 0) branch * mce_log() * mce_end() * mce_severity() * mce_reign() until mce_panic("Fatal Machine check",) * mce_panic() * print_mce() - Reference: * Inject data file: cases/soft-inj/panic_ucr/data/srar_unknown - 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 "Action required; unknown MCACOD" 4. srar_no_en - Objective: * Test fatal MCE occur - Code path tested: * do_machine_check() * mce_start() * mce_timeout() except if (*t <= 0) branch * mce_log() * mce_end() * mce_severity() * mce_reign() until mce_panic("Machine check from unknown source",) * mce_panic() * print_mce() - Reference: * Inject data file: cases/soft-inj/panic_ucr/data/srar_no_en * Reference MCE records: cases/soft-inj/panic_ucr/refer/srar_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" 5.srao_ewb_noripv - Objective: * Test MCE handler logic for EIPV and RIPV MCE in kernel space - Code path tested: * do_machine_check() * mce_start() * mce_end() * mce_severity() * mce_regin() for_each_possible_loops loops(check mce-severity message) * mce_panic() * mce_log() * print_mce() - Reference: * Inject data file: cases/soft-inj/recoverable_ucr/data/srao_ewb_noripv - 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 "Neither restart nor error IP" 6.srao_mem_scrub_noripv - Objective: * Test MCE handler logic for EIPV and RIPV MCE in kernel space - Code path tested: * the same as srao_ewb_noripv - Reference: * Inject data file: * cases/soft-inj/recoverable_ucr/data/srao_mem_scrub_noripv - 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 "Neither restart nor error IP"