Lines Matching +full:display +full:- +full:hub
9 * Copyright (C) 2007-2014 Silicon Graphics, Inc. All rights reserved.
132 uv_cpuid.pnode_mask = (1 << uv_cpuid.n_skt) - 1; in early_get_pnodeid()
140 /* Running on a UV Hubbed system, determine which UV Hub Type it is */
150 * All blades/nodes have the same part # and hub revision. in early_set_hub_type()
166 + UV4_HUB_REVISION_BASE - 1; in early_set_hub_type()
182 + UV2_HUB_REVISION_BASE - 1; in early_set_hub_type()
247 #define INVALID_TYPE 0 /* Leaf 0xb sub-leaf types */
282 uv_cpuid.apicid_mask = (~(-1 << sid_shift)); in set_x2apic_bits()
310 for (i = 0; st->entry[i].type != UV_SYSTAB_TYPE_UNUSED; i++) { in early_find_archtype()
311 unsigned long ptr = st->entry[i].offset; in early_find_archtype()
316 if (st->entry[i].type == UV_SYSTAB_TYPE_ARCH_TYPE) in early_find_archtype()
326 int n = strlen(uv_ate->archtype); in decode_arch_type()
328 if (n > 0 && n < sizeof(uv_ate->archtype)) { in decode_arch_type()
330 uv_stringify(sizeof(uv_archtype), uv_archtype, uv_ate->archtype); in decode_arch_type()
354 rev = st->revision; in early_get_arch_type()
360 uvst_size = st->size; in early_get_arch_type()
419 /* UV3 Hubless: UV300/MC990X w/o hub */ in uv_set_system_type()
438 uv_hub_info->hub_revision = in uv_set_system_type()
444 switch (uv_hub_info->hub_revision) { in uv_set_system_type()
469 /* Get UV hub chip part number & revision */ in uv_set_system_type()
486 /* Set up early hub info fields for Node 0 */ in uv_acpi_madt_oem_check()
487 uv_cpu_info->p_uv_hub_info = &uv_hub_info_node0; in uv_acpi_madt_oem_check()
493 /* Save for display of the OEM Table ID */ in uv_acpi_madt_oem_check()
496 pr_info("UV: OEM IDs %s/%s, System/UVType %d/0x%x, HUB RevID %d\n", in uv_acpi_madt_oem_check()
549 /* The following values are used for the per node hub info struct */
599 set_memory_block_size_order(order - 1); in set_block_size()
614 int bytes, i, sid, lsid = -1, indx = 0, lindx = -1; in build_uv_gr_table()
625 for (; gre->type != UV_GAM_RANGE_TYPE_UNUSED; gre++) { in build_uv_gr_table()
626 if (gre->type == UV_GAM_RANGE_TYPE_HOLE) { in build_uv_gr_table()
628 /* Mark hole between RAM/non-RAM: */ in build_uv_gr_table()
630 last_limit = gre->limit; in build_uv_gr_table()
634 last_limit = gre->limit; in build_uv_gr_table()
635 pr_info("UV: extra hole in GAM RE table @%d\n", (int)(gre - uv_gre_table)); in build_uv_gr_table()
638 if (_max_socket < gre->sockid) { in build_uv_gr_table()
639 …pr_err("UV: GAM table sockid(%d) too large(>%d) @%d\n", gre->sockid, _max_socket, (int)(gre - uv_g… in build_uv_gr_table()
642 sid = gre->sockid - _min_socket; in build_uv_gr_table()
646 grt->base = lindx; in build_uv_gr_table()
647 grt->nasid = gre->nasid; in build_uv_gr_table()
648 grt->limit = last_limit = gre->limit; in build_uv_gr_table()
656 if (grt->limit == last_limit) { in build_uv_gr_table()
657 grt->limit = last_limit = gre->limit; in build_uv_gr_table()
661 /* Non-contiguous RAM range: */ in build_uv_gr_table()
664 grt->base = lindx; in build_uv_gr_table()
665 grt->nasid = gre->nasid; in build_uv_gr_table()
666 grt->limit = last_limit = gre->limit; in build_uv_gr_table()
669 /* Non-contiguous/non-RAM: */ in build_uv_gr_table()
672 grt->base = grt - _gr_table; in build_uv_gr_table()
673 grt->nasid = gre->nasid; in build_uv_gr_table()
674 grt->limit = last_limit = gre->limit; in build_uv_gr_table()
680 i = grt - _gr_table; in build_uv_gr_table()
692 /* Display resultant GAM range table: */ in build_uv_gr_table()
695 int gb = grt->base; in build_uv_gr_table()
698 end = (unsigned long)grt->limit << UV_GAM_RANGE_SHFT; in build_uv_gr_table()
700 pr_info("UV: GAM Range %2d %04x 0x%013lx-0x%013lx (%d)\n", i, grt->nasid, start, end, gb); in build_uv_gr_table()
893 pr_info("UV: Map %s_HI 0x%lx - 0x%lx %s (%d segments)\n", in map_high()
961 UV2_MMIOH = -1,
1026 max_io = lnasid = fi = li = -1; in calc_mmioh_map()
1041 nasid = -1; in calc_mmioh_map()
1047 if (i != n-1) in calc_mmioh_map()
1052 if (lnasid != -1 || (i == n-1 && nasid != -1)) { in calc_mmioh_map()
1056 if (lnasid == -1) { in calc_mmioh_map()
1065 pr_info("UV: %s[%03d..%03d] NASID 0x%04x ADDR 0x%016lx - 0x%016lx\n", in calc_mmioh_map()
1191 domain = pci_domain_nr(pdev->bus); in uv_set_vga_state()
1192 bus = pdev->bus->number; in uv_set_vga_state()
1209 uv_hub_info->nr_online_cpus++; in uv_cpu_init()
1223 mnp->n_val = uv_cpuid.n_skt; in get_mn()
1225 mnp->m_val = 0; in get_mn()
1226 mnp->n_lshift = 0; in get_mn()
1230 mnp->m_val = uv_cpuid.m_skt; in get_mn()
1232 mnp->n_lshift = m_gr_config.s3.m_skt; in get_mn()
1234 mnp->m_val = uv_cpuid.m_skt; in get_mn()
1235 mnp->n_lshift = mnp->m_val == 40 ? 40 : 39; in get_mn()
1237 mnp->m_shift = mnp->m_val ? 64 - mnp->m_val : 0; in get_mn()
1245 hi->gpa_mask = mn.m_val ? in uv_init_hub_info()
1246 (1UL << (mn.m_val + mn.n_val)) - 1 : in uv_init_hub_info()
1247 (1UL << uv_cpuid.gpa_shift) - 1; in uv_init_hub_info()
1249 hi->m_val = mn.m_val; in uv_init_hub_info()
1250 hi->n_val = mn.n_val; in uv_init_hub_info()
1251 hi->m_shift = mn.m_shift; in uv_init_hub_info()
1252 hi->n_lshift = mn.n_lshift ? mn.n_lshift : 0; in uv_init_hub_info()
1253 hi->hub_revision = uv_hub_info->hub_revision; in uv_init_hub_info()
1254 hi->hub_type = uv_hub_info->hub_type; in uv_init_hub_info()
1255 hi->pnode_mask = uv_cpuid.pnode_mask; in uv_init_hub_info()
1256 hi->nasid_shift = uv_cpuid.nasid_shift; in uv_init_hub_info()
1257 hi->min_pnode = _min_pnode; in uv_init_hub_info()
1258 hi->min_socket = _min_socket; in uv_init_hub_info()
1259 hi->node_to_socket = _node_to_socket; in uv_init_hub_info()
1260 hi->pnode_to_socket = _pnode_to_socket; in uv_init_hub_info()
1261 hi->socket_to_node = _socket_to_node; in uv_init_hub_info()
1262 hi->socket_to_pnode = _socket_to_pnode; in uv_init_hub_info()
1263 hi->gr_table_len = _gr_table_len; in uv_init_hub_info()
1264 hi->gr_table = _gr_table; in uv_init_hub_info()
1267 hi->gnode_extra = (uv_node_id & ~((1 << uv_cpuid.gnode_shift) - 1)) >> 1; in uv_init_hub_info()
1269 hi->gnode_upper = (u64)hi->gnode_extra << mn.m_val; in uv_init_hub_info()
1272 hi->global_mmr_base = uv_gp_table->mmr_base; in uv_init_hub_info()
1273 hi->global_mmr_shift = uv_gp_table->mmr_shift; in uv_init_hub_info()
1274 hi->global_gru_base = uv_gp_table->gru_base; in uv_init_hub_info()
1275 hi->global_gru_shift = uv_gp_table->gru_shift; in uv_init_hub_info()
1276 hi->gpa_shift = uv_gp_table->gpa_shift; in uv_init_hub_info()
1277 hi->gpa_mask = (1UL << hi->gpa_shift) - 1; in uv_init_hub_info()
1279 hi->global_mmr_base = in uv_init_hub_info()
1282 hi->global_mmr_shift = _UV_GLOBAL_MMR64_PNODE_SHIFT; in uv_init_hub_info()
1285 get_lowmem_redirect(&hi->lowmem_remap_base, &hi->lowmem_remap_top); in uv_init_hub_info()
1287 hi->apic_pnode_shift = uv_cpuid.socketid_shift; in uv_init_hub_info()
1290 pr_info("UV: N:%d M:%d m_shift:%d n_lshift:%d\n", hi->n_val, hi->m_val, hi->m_shift, hi->n_lshift); in uv_init_hub_info()
1291 …ask/shift:0x%lx/%d pnode_mask:0x%x apic_pns:%d\n", hi->gpa_mask, hi->gpa_shift, hi->pnode_mask, hi… in uv_init_hub_info()
1292 pr_info("UV: mmr_base/shift:0x%lx/%ld\n", hi->global_mmr_base, hi->global_mmr_shift); in uv_init_hub_info()
1293 if (hi->global_gru_base) in uv_init_hub_info()
1295 hi->global_gru_base, hi->global_gru_shift); in uv_init_hub_info()
1297 pr_info("UV: gnode_upper:0x%lx gnode_extra:0x%x\n", hi->gnode_upper, hi->gnode_extra); in uv_init_hub_info()
1306 uv_gp_table->mmr_base, uv_gp_table->mmr_shift, in decode_gam_params()
1307 uv_gp_table->gru_base, uv_gp_table->gru_shift, in decode_gam_params()
1308 uv_gp_table->gpa_shift); in decode_gam_params()
1317 int sock_max = -1, pnode_max = -1; in decode_gam_rng_tbl()
1320 for (; gre->type != UV_GAM_RANGE_TYPE_UNUSED; gre++) { in decode_gam_rng_tbl()
1321 unsigned long size = ((unsigned long)(gre->limit - lgre) in decode_gam_rng_tbl()
1333 if (gre->type == 1 || gre->type == 2) in decode_gam_rng_tbl()
1341 pr_info("UV: %2d: 0x%014lx-0x%014lx%c %5lu%c %3d %04x %02x %02x\n", in decode_gam_rng_tbl()
1344 (unsigned long)gre->limit << UV_GAM_RANGE_SHFT, in decode_gam_rng_tbl()
1346 gre->type, gre->nasid, gre->sockid, gre->pnode); in decode_gam_rng_tbl()
1348 if (gre->type == UV_GAM_RANGE_TYPE_HOLE) in decode_gam_rng_tbl()
1349 gend = (unsigned long)gre->limit << UV_GAM_RANGE_SHFT; in decode_gam_rng_tbl()
1352 lgre = gre->limit; in decode_gam_rng_tbl()
1353 if (sock_min > gre->sockid) in decode_gam_rng_tbl()
1354 sock_min = gre->sockid; in decode_gam_rng_tbl()
1355 if (sock_max < gre->sockid) in decode_gam_rng_tbl()
1356 sock_max = gre->sockid; in decode_gam_rng_tbl()
1357 if (pnode_min > gre->pnode) in decode_gam_rng_tbl()
1358 pnode_min = gre->pnode; in decode_gam_rng_tbl()
1359 if (pnode_max < gre->pnode) in decode_gam_rng_tbl()
1360 pnode_max = gre->pnode; in decode_gam_rng_tbl()
1382 if (st && st->revision == UV_SYSTAB_VERSION_1) in decode_uv_systab()
1385 if ((!st) || (st->revision < UV_SYSTAB_VERSION_UV4_LATEST)) { in decode_uv_systab()
1386 int rev = st ? st->revision : 0; in decode_uv_systab()
1390 pr_err("UV: Does not support UV, switch to non-UV x86_64\n"); in decode_uv_systab()
1393 return -EINVAL; in decode_uv_systab()
1396 for (i = 0; st->entry[i].type != UV_SYSTAB_TYPE_UNUSED; i++) { in decode_uv_systab()
1397 unsigned long ptr = st->entry[i].offset; in decode_uv_systab()
1405 switch (st->entry[i].type) { in decode_uv_systab()
1420 __func__, st->entry[i].type); in decode_uv_systab()
1455 int sock_min = INT_MAX, sock_max = -1, s_mask; in boot_init_possible_blades()
1457 s_mask = (1 << uv_cpuid.n_skt) - 1; in boot_init_possible_blades()
1483 uv_pb = sock_max - sock_min + 1; in boot_init_possible_blades()
1488 pr_info("UV: number nodes/possible blades %d (%d - %d)\n", in boot_init_possible_blades()
1500 return -ENOMEM; in alloc_conv_table()
1553 nump = maxpnode - minpnode + 1; in build_socket_tables()
1554 nums = maxsock - minsock + 1; in build_socket_tables()
1568 for (; gre->type != UV_GAM_RANGE_TYPE_UNUSED; gre++) { in build_socket_tables()
1569 if (gre->type == UV_GAM_RANGE_TYPE_HOLE) in build_socket_tables()
1571 i = gre->sockid - minsock; in build_socket_tables()
1573 _socket_to_pnode[i] = gre->pnode; in build_socket_tables()
1575 i = gre->pnode - minpnode; in build_socket_tables()
1577 _pnode_to_socket[i] = gre->sockid; in build_socket_tables()
1580 gre->sockid, gre->type, gre->nasid, in build_socket_tables()
1581 _socket_to_pnode[gre->sockid - minsock], in build_socket_tables()
1582 _pnode_to_socket[gre->pnode - minpnode]); in build_socket_tables()
1585 /* Set socket -> node values: */ in build_socket_tables()
1597 if (_socket_to_node[sockid - minsock] == SOCK_EMPTY) in build_socket_tables()
1598 _socket_to_node[sockid - minsock] = nid; in build_socket_tables()
1608 _socket_to_node[sockid - minsock]); in build_socket_tables()
1636 current->comm); in proc_hubbed_show()
1644 current->comm); in proc_hubless_show()
1652 current->comm); in proc_archtype_show()
1704 char *hub = is_uv5_hub() ? "UV500" : in uv_system_init_hub() local
1710 if (!hub) { in uv_system_init_hub()
1711 pr_err("UV: Unknown/unsupported UV hub\n"); in uv_system_init_hub()
1714 pr_info("UV: Found %s hub\n", hub); in uv_system_init_hub()
1736 uv_possible_blades = (_max_socket - _min_socket) + 1; in uv_system_init_hub()
1738 /* uv_num_possible_blades() is really the hub count: */ in uv_system_init_hub()
1748 * structure per blade. Further down we create a per-node in uv_system_init_hub()
1762 /* Allocate & fill new per hub info list */ in uv_system_init_hub()
1767 while (--bid > 0) in uv_system_init_hub()
1778 new_hub->pnode = uv_blade_to_pnode(bid); in uv_system_init_hub()
1780 new_hub->pnode = 0xffff; in uv_system_init_hub()
1782 new_hub->numa_blade_id = bid; in uv_system_init_hub()
1783 new_hub->memory_nid = NUMA_NO_NODE; in uv_system_init_hub()
1784 new_hub->nr_possible_cpus = 0; in uv_system_init_hub()
1785 new_hub->nr_online_cpus = 0; in uv_system_init_hub()
1814 bid = uv_pnode_to_socket(pnode) - _min_socket; in uv_system_init_hub()
1816 uv_cpu_info_per(cpu)->p_uv_hub_info = uv_hub_info_list_blade[bid]; in uv_system_init_hub()
1817 uv_cpu_info_per(cpu)->blade_cpu_id = uv_cpu_hub_info(cpu)->nr_possible_cpus++; in uv_system_init_hub()
1818 if (uv_cpu_hub_info(cpu)->memory_nid == NUMA_NO_NODE) in uv_system_init_hub()
1819 uv_cpu_hub_info(cpu)->memory_nid = cpu_to_node(cpu); in uv_system_init_hub()
1821 if (uv_cpu_hub_info(cpu)->pnode == 0xffff) in uv_system_init_hub()
1822 uv_cpu_hub_info(cpu)->pnode = pnode; in uv_system_init_hub()
1826 unsigned short pnode = uv_hub_info_list_blade[bid]->pnode; in uv_system_init_hub()
1833 pr_info("UV: HUB:%2d pn:%02x nrcpus:%d\n", in uv_system_init_hub()
1835 uv_hub_info_list_blade[bid]->pnode, in uv_system_init_hub()
1836 uv_hub_info_list_blade[bid]->nr_possible_cpus); in uv_system_init_hub()
1859 * not have a "UV HUB" (referred to as "hubless").