root/usr/src/test/os-tests/tests/zen_umc/zen_umc_fabric_ids.c
/*
 * This file and its contents are supplied under the terms of the
 * Common Development and Distribution License ("CDDL"), version 1.0.
 * You may only use this file in accordance with the terms of version
 * 1.0 of the CDDL.
 *
 * A full copy of the text of the CDDL should have accompanied this
 * source.  A copy of the CDDL is also available via the Internet at
 * http://www.illumos.org/license/CDDL.
 */

/*
 * Copyright 2022 Oxide Computer Company
 */

/*
 * Test basic fabric ID composition and decomposition across a couple of
 * different styles of fabric decomposition schemes.
 */

#include "zen_umc_test.h"

const df_fabric_decomp_t naples_decomp_cpu = {
        .dfd_sock_mask = 0x04,
        .dfd_die_mask = 0x03,
        .dfd_node_mask = 0xe0,
        .dfd_comp_mask = 0x07,
        .dfd_sock_shift = 2,
        .dfd_die_shift = 0,
        .dfd_node_shift = 5,
        .dfd_comp_shift = 0
};

const df_fabric_decomp_t naples_decomp_apu = {
        .dfd_sock_mask = 0x0,
        .dfd_die_mask = 0x0,
        .dfd_node_mask = 0x0,
        .dfd_comp_mask = 0xf,
        .dfd_sock_shift = 0,
        .dfd_die_shift = 0,
        .dfd_node_shift = 0,
        .dfd_comp_shift = 0
};

const df_fabric_decomp_t milan_decomp = {
        .dfd_sock_mask = 0x01,
        .dfd_die_mask = 0x00,
        .dfd_node_mask = 0x20,
        .dfd_comp_mask = 0x1f,
        .dfd_sock_shift = 0,
        .dfd_die_shift = 0,
        .dfd_node_shift = 5,
        .dfd_comp_shift = 0
};

static const df_fabric_decomp_t contig_decomp = {
        .dfd_sock_mask = 0x1c,
        .dfd_die_mask = 0x3,
        .dfd_node_mask = 0xf80,
        .dfd_comp_mask = 0x07f,
        .dfd_sock_shift = 2,
        .dfd_die_shift = 0,
        .dfd_node_shift = 7,
        .dfd_comp_shift = 0
};

const umc_fabric_test_t zen_umc_test_fabric_ids[] = { {
        .uft_desc = "Naples CPU (0)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0
}, {
        .uft_desc = "Naples CPU Socket 1 (0)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x81,
        .uft_sock_id = 1,
        .uft_die_id = 0,
        .uft_comp_id = 1
}, {
        .uft_desc = "Naples CPU Socket 1 (1)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x87,
        .uft_sock_id = 1,
        .uft_die_id = 0,
        .uft_comp_id = 7
}, {
        .uft_desc = "Naples Die (0)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0xa7,
        .uft_sock_id = 1,
        .uft_die_id = 1,
        .uft_comp_id = 7
}, {
        .uft_desc = "Naples Die (1)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0xe4,
        .uft_sock_id = 1,
        .uft_die_id = 3,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples CPU Invalid Socket (0)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 11,
        .uft_die_id = 3,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples CPU Invalid Socket (1)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 2,
        .uft_die_id = 3,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples CPU Invalid Socket (2)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_FALSE,
        .uft_valid = B_FALSE,
        .uft_fabric_id = 0x91,
}, {
        .uft_desc = "Naples CPU Invalid Die",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 4,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples CPU Invalid Component (0)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x34
}, {
        .uft_desc = "Naples CPU Invalid Component (1)",
        .uft_decomp = &naples_decomp_cpu,
        .uft_compose = B_FALSE,
        .uft_valid = B_FALSE,
        .uft_fabric_id = 0x88,
}, {
        .uft_desc = "Naples APU Invalid Socket (0)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 1,
        .uft_die_id = 0,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples APU Invalid Socket (1)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0x22,
        .uft_die_id = 0,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples APU Invalid Die (0)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 1,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples APU Invalid Die (1)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 3,
        .uft_comp_id = 4
}, {
        .uft_desc = "Naples APU Invalid Components (0)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x10
}, {
        .uft_desc = "Naples APU Invalid Components (1)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x13
}, {
        .uft_desc = "Naples APU Roundtrip (0)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x03,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 3
}, {
        .uft_desc = "Naples APU Roundtrip (1)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x00,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0
}, {
        .uft_desc = "Naples APU Roundtrip (2)",
        .uft_decomp = &naples_decomp_apu,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x0f,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0xf
}, {
        .uft_desc = "Milan Roundtrip (0)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x00,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0
}, {
        .uft_desc = "Milan Roundtrip (1)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x13,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x13
}, {
        .uft_desc = "Milan Roundtrip (2)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x33,
        .uft_sock_id = 1,
        .uft_die_id = 0,
        .uft_comp_id = 0x13
}, {
        .uft_desc = "Milan Roundtrip (3)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x20,
        .uft_sock_id = 1,
        .uft_die_id = 0,
        .uft_comp_id = 0
}, {
        .uft_desc = "Milan Invalid Component (0)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x20
}, {
        .uft_desc = "Milan Invalid Component (1)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0x2f
}, {
        .uft_desc = "Milan Invalid Die",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0,
        .uft_die_id = 1,
        .uft_comp_id = 0xf
}, {
        .uft_desc = "Milan Invalid Socket (0)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 2,
        .uft_die_id = 0,
        .uft_comp_id = 0xf
}, {
        .uft_desc = "Milan Invalid Socket (1)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 3,
        .uft_die_id = 0,
        .uft_comp_id = 0xf
}, {
        .uft_desc = "Milan Invalid Socket (2)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_FALSE,
        .uft_fabric_id = 0x40
}, {
        .uft_desc = "Milan Invalid Socket (3)",
        .uft_decomp = &milan_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_FALSE,
        .uft_fabric_id = 0x8f
}, {
        .uft_desc = "Contig Multi-Die Roundtrip (0)",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0,
        .uft_sock_id = 0,
        .uft_die_id = 0,
        .uft_comp_id = 0
}, {
        .uft_desc = "Contig Multi-Die Roundtrip (1)",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0xfff,
        .uft_sock_id = 0x7,
        .uft_die_id = 0x3,
        .uft_comp_id = 0x7f
}, {
        .uft_desc = "Contig Multi-Die Roundtrip (2)",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x121,
        .uft_sock_id = 0x0,
        .uft_die_id = 0x2,
        .uft_comp_id = 0x21
}, {
        .uft_desc = "Contig Multi-Die Roundtrip (3)",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_TRUE,
        .uft_fabric_id = 0x7f7,
        .uft_sock_id = 0x3,
        .uft_die_id = 0x3,
        .uft_comp_id = 0x77
}, {
        .uft_desc = "Contig Multi-Die Bad Socket",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0x8,
        .uft_die_id = 0x1,
        .uft_comp_id = 0x23
}, {
        .uft_desc = "Contig Multi-Die Bad Die",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0x2,
        .uft_die_id = 0x5,
        .uft_comp_id = 0x23
}, {
        .uft_desc = "Contig Multi-Die Bad Component",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_TRUE,
        .uft_valid = B_FALSE,
        .uft_sock_id = 0x2,
        .uft_die_id = 0x1,
        .uft_comp_id = 0xff
}, {
        .uft_desc = "Contig Multi-Die Bad Fabric",
        .uft_decomp = &contig_decomp,
        .uft_compose = B_FALSE,
        .uft_valid = B_FALSE,
        .uft_fabric_id = 0x1000
}, {
        .uft_desc = NULL
} };