Lines Matching +full:- +full:- +full:disable +full:- +full:numa
5 * Modeled loosely on the NUMA options handling in hw/core/numa.c
11 #include "qemu/error-report.h"
16 #include "qapi/qapi-visit-machine.h"
23 #include "hw/pci-bridge/pci_expander_bridge.h"
34 fw->index = index; in cxl_fixed_memory_window_config()
36 for (target = object->targets; target; target = target->next) { in cxl_fixed_memory_window_config()
37 fw->num_targets++; in cxl_fixed_memory_window_config()
40 fw->enc_int_ways = cxl_interleave_ways_enc(fw->num_targets, errp); in cxl_fixed_memory_window_config()
45 if (object->size % (256 * MiB)) { in cxl_fixed_memory_window_config()
50 fw->size = object->size; in cxl_fixed_memory_window_config()
52 if (object->has_interleave_granularity) { in cxl_fixed_memory_window_config()
53 fw->enc_int_gran = in cxl_fixed_memory_window_config()
54 cxl_interleave_granularity_enc(object->interleave_granularity, in cxl_fixed_memory_window_config()
61 fw->enc_int_gran = 0; in cxl_fixed_memory_window_config()
64 fw->targets = g_malloc0_n(fw->num_targets, sizeof(*fw->targets)); in cxl_fixed_memory_window_config()
65 for (i = 0, target = object->targets; target; i++, target = target->next) { in cxl_fixed_memory_window_config()
67 fw->targets[i] = g_strdup(target->value); in cxl_fixed_memory_window_config()
83 for (i = 0; i < fw->num_targets; i++) { in cxl_fmws_link()
87 o = object_resolve_path_type(fw->targets[i], TYPE_PXB_CXL_DEV, in cxl_fmws_link()
91 fw->targets[i]); in cxl_fmws_link()
94 fw->target_hbs[i] = PXB_CXL_DEV(o); in cxl_fmws_link()
108 int hdm_inc = R_CXL_HDM_DECODER1_BASE_LO - R_CXL_HDM_DECODER0_BASE_LO; in cxl_hdm_find_target()
151 *target = extract32(val, (target_idx - 4) * 8, 8); in cxl_hdm_find_target()
171 addr += fw->base; in cxl_cfmws_find_device()
173 rb_index = (addr / cxl_decode_ig(fw->enc_int_gran)) % fw->num_targets; in cxl_cfmws_find_device()
174 hb = PCI_HOST_BRIDGE(fw->target_hbs[rb_index]->cxl_host_bridge); in cxl_cfmws_find_device()
175 if (!hb || !hb->bus || !pci_bus_is_cxl(hb->bus)) { in cxl_cfmws_find_device()
180 rp = pcie_find_port_first(hb->bus); in cxl_cfmws_find_device()
190 cache_mem = hb_cstate->crb.cache_mem_registers; in cxl_cfmws_find_device()
197 rp = pcie_find_port_by_pn(hb->bus, target); in cxl_cfmws_find_device()
203 d = pci_bridge_get_sec_bus(PCI_BRIDGE(rp))->devices[0]; in cxl_cfmws_find_device()
226 cache_mem = usp_cstate->crb.cache_mem_registers; in cxl_cfmws_find_device()
233 d = pcie_find_port_by_pn(&PCI_BRIDGE(d)->sec_bus, target); in cxl_cfmws_find_device()
238 d = pci_bridge_get_sec_bus(PCI_BRIDGE(d))->devices[0]; in cxl_cfmws_find_device()
263 return cxl_type3_read(d, addr + fw->base, data, size, attrs); in cxl_read_cfmws()
279 return cxl_type3_write(d, addr + fw->base, data, size, attrs); in cxl_write_cfmws()
302 bool value = cxl_state->is_enabled; in machine_get_cxl()
316 cxl_state->is_enabled = value; in machine_set_cxl()
323 CXLFixedMemoryWindowOptionsList **list = &state->cfmw_list; in machine_get_cfmw()
341 for (it = cfmw_list, index = 0; it; it = it->next, index++) { in machine_set_cfmw()
342 cxl_fixed_memory_window_config(it->value, index, errp); in machine_set_cfmw()
344 state->cfmw_list = cfmw_list; in machine_set_cfmw()
352 "Set on/off to enable/disable " in cxl_machine_init()
355 object_property_add(obj, "cxl-fmw", "CXLFixedMemoryWindow", in cxl_machine_init()
358 object_property_set_description(obj, "cxl-fmw", in cxl_machine_init()
366 QLIST_FOREACH(bus, &bus->child, sibling) { in cxl_hook_up_pxb_registers()
371 if (!state->is_enabled) { in cxl_hook_up_pxb_registers()
407 return ap->index > bp->index; in cfmws_cmp()
423 sysbus_mmio_map(SYS_BUS_DEVICE(fw), 0, fw->base); in cxl_fmws_mmio_map()
440 for (iter = cfmws_list; iter; iter = iter->next) { in cxl_fmws_set_memmap()
441 fw = CXL_FMW(iter->data); in cxl_fmws_set_memmap()
442 if (base + fw->size <= max_addr) { in cxl_fmws_set_memmap()
443 fw->base = base; in cxl_fmws_set_memmap()
444 base += fw->size; in cxl_fmws_set_memmap()
456 memory_region_init_io(&fw->mr, OBJECT(dev), &cfmws_ops, fw, in cxl_fmw_realize()
457 "cxl-fixed-memory-region", fw->size); in cxl_fmw_realize()
458 sysbus_init_mmio(SYS_BUS_DEVICE(dev), &fw->mr); in cxl_fmw_realize()
469 dc->desc = "CXL Fixed Memory Window"; in cxl_fmw_class_init()
470 dc->realize = cxl_fmw_realize; in cxl_fmw_class_init()
471 /* Reason - created by machines as tightly coupled to machine memory map */ in cxl_fmw_class_init()
472 dc->user_creatable = false; in cxl_fmw_class_init()