blob: 4dd8b96f13a8d94b0d5530d69804faa7f407b3ac [file] [log] [blame] [edit]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Test the known dependencies for facilities
*
* Copyright 2019 IBM Corp.
*
* Authors:
* Christian Borntraeger <borntraeger@de.ibm.com>
*/
#include <asm/facility.h>
#include <vm.h>
static struct {
int facility;
int implied;
bool expected_tcg_fail;
} dep[] = {
/* from SA22-7832-11 4-98 facility indications */
{ 4, 3 },
{ 5, 3 },
{ 5, 4 },
{ 19, 18 },
{ 37, 42, true }, /* TCG does not have DFP and won't get it soon */
{ 43, 42 },
{ 73, 49 },
{ 134, 129 },
{ 135, 129 },
{ 139, 25 },
{ 139, 28 },
{ 146, 76 },
/* indirectly documented in description */
{ 78, 8 }, /* EDAT */
/* new dependencies from gen15 */
{ 61, 45 },
{ 148, 129 },
{ 148, 135 },
{ 152, 129 },
{ 152, 134 },
{ 155, 76 },
{ 155, 77 },
};
int main(void)
{
int i;
report_prefix_push("cpumodel");
report_prefix_push("dependency");
for (i = 0; i < ARRAY_SIZE(dep); i++) {
if (test_facility(dep[i].facility)) {
report_xfail(dep[i].expected_tcg_fail && vm_is_tcg(),
test_facility(dep[i].implied),
"%d implies %d",
dep[i].facility, dep[i].implied);
} else {
report_skip("facility %d not present", dep[i].facility);
}
}
report_prefix_pop();
report_prefix_pop();
return report_summary();
}