cxl/cxl-host: Add memops for CFMWS region.
[qemu.git] / include / hw / cxl / cxl.h
blob21d28ca1105694f01462cd725491763385f11eb5
1 /*
2 * QEMU CXL Support
4 * Copyright (c) 2020 Intel
6 * This work is licensed under the terms of the GNU GPL, version 2. See the
7 * COPYING file in the top-level directory.
8 */
10 #ifndef CXL_H
11 #define CXL_H
14 #include "qapi/qapi-types-machine.h"
15 #include "hw/pci/pci_bridge.h"
16 #include "hw/pci/pci_host.h"
17 #include "cxl_pci.h"
18 #include "cxl_component.h"
19 #include "cxl_device.h"
21 #define CXL_COMPONENT_REG_BAR_IDX 0
22 #define CXL_DEVICE_REG_BAR_IDX 2
24 #define CXL_WINDOW_MAX 10
26 typedef struct CXLFixedWindow {
27 uint64_t size;
28 char **targets;
29 struct PXBDev *target_hbs[8];
30 uint8_t num_targets;
31 uint8_t enc_int_ways;
32 uint8_t enc_int_gran;
33 /* Todo: XOR based interleaving */
34 MemoryRegion mr;
35 hwaddr base;
36 } CXLFixedWindow;
38 typedef struct CXLState {
39 bool is_enabled;
40 MemoryRegion host_mr;
41 unsigned int next_mr_idx;
42 GList *fixed_windows;
43 } CXLState;
45 struct CXLHost {
46 PCIHostState parent_obj;
48 CXLComponentState cxl_cstate;
51 #define TYPE_PXB_CXL_HOST "pxb-cxl-host"
52 OBJECT_DECLARE_SIMPLE_TYPE(CXLHost, PXB_CXL_HOST)
54 void cxl_fixed_memory_window_config(MachineState *ms,
55 CXLFixedMemoryWindowOptions *object,
56 Error **errp);
57 void cxl_fixed_memory_window_link_targets(Error **errp);
59 extern const MemoryRegionOps cfmws_ops;
61 #endif