mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 638b752da3
			
		
	
	
		638b752da3
		
	
	
	
	
		
			
			An initial simple upstream port emulation to allow the creation of CXL switches. The Device ID has been allocated for this use. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20220616145126.8002-2-Jonathan.Cameron@huawei.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * QEMU CXL Support
 | |
|  *
 | |
|  * Copyright (c) 2020 Intel
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2. See the
 | |
|  * COPYING file in the top-level directory.
 | |
|  */
 | |
| 
 | |
| #ifndef CXL_H
 | |
| #define CXL_H
 | |
| 
 | |
| 
 | |
| #include "qapi/qapi-types-machine.h"
 | |
| #include "qapi/qapi-visit-machine.h"
 | |
| #include "hw/pci/pci_bridge.h"
 | |
| #include "hw/pci/pci_host.h"
 | |
| #include "cxl_pci.h"
 | |
| #include "cxl_component.h"
 | |
| #include "cxl_device.h"
 | |
| 
 | |
| #define CXL_COMPONENT_REG_BAR_IDX 0
 | |
| #define CXL_DEVICE_REG_BAR_IDX 2
 | |
| 
 | |
| #define CXL_WINDOW_MAX 10
 | |
| 
 | |
| typedef struct CXLFixedWindow {
 | |
|     uint64_t size;
 | |
|     char **targets;
 | |
|     struct PXBDev *target_hbs[8];
 | |
|     uint8_t num_targets;
 | |
|     uint8_t enc_int_ways;
 | |
|     uint8_t enc_int_gran;
 | |
|     /* Todo: XOR based interleaving */
 | |
|     MemoryRegion mr;
 | |
|     hwaddr base;
 | |
| } CXLFixedWindow;
 | |
| 
 | |
| typedef struct CXLState {
 | |
|     bool is_enabled;
 | |
|     MemoryRegion host_mr;
 | |
|     unsigned int next_mr_idx;
 | |
|     GList *fixed_windows;
 | |
|     CXLFixedMemoryWindowOptionsList *cfmw_list;
 | |
| } CXLState;
 | |
| 
 | |
| struct CXLHost {
 | |
|     PCIHostState parent_obj;
 | |
| 
 | |
|     CXLComponentState cxl_cstate;
 | |
| };
 | |
| 
 | |
| #define TYPE_PXB_CXL_HOST "pxb-cxl-host"
 | |
| OBJECT_DECLARE_SIMPLE_TYPE(CXLHost, PXB_CXL_HOST)
 | |
| 
 | |
| #define TYPE_CXL_USP "cxl-upstream"
 | |
| 
 | |
| typedef struct CXLUpstreamPort CXLUpstreamPort;
 | |
| DECLARE_INSTANCE_CHECKER(CXLUpstreamPort, CXL_USP, TYPE_CXL_USP)
 | |
| CXLComponentState *cxl_usp_to_cstate(CXLUpstreamPort *usp);
 | |
| #endif
 |