mirror_ubuntu-kernels/drivers/gpu/drm/xe
Matthew Auld 4202dd9fc4 drm/xe/migrate: fix MI_ARB_ON_OFF usage
Spec says: "This is a privileged command; it will not be effective (will
be converted to a no-op) if executed from within a non-privileged batch
buffer." However here it looks like we are just emitting it inside some
bb which was jumped to via the ppGTT, which should be considered
a non-privileged address space.

It looks like we just need some way of preventing things like the
emit_pte() and later copy/clear being preempted in-between so rather
just emit directly in the ring for migration jobs.

Bspec: 45716
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2023-12-21 11:43:31 -05:00
..
abi
instructions drm/xe/xe2: Update SVG state handling 2023-12-21 11:43:22 -05:00
regs drm/xe/xelpmp: Extend Wa_22016670082 to Xe_LPM+ 2023-12-21 11:43:31 -05:00
tests drm/xe: directly use pat_index for pte_encode 2023-12-21 11:42:58 -05:00
.gitignore drm/xe: Add support for OOB workarounds 2023-12-19 18:34:03 -05:00
.kunitconfig drm/xe: KUnit tests depend on CONFIG_DRM_FBDEV_EMULATION 2023-12-19 18:27:43 -05:00
Kconfig drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
Kconfig.debug drm/xe: Add basic unit tests for rtp 2023-12-19 18:31:32 -05:00
Kconfig.profile drm/xe: Add CONFIG_DRM_XE_PREEMPT_TIMEOUT 2023-12-21 11:40:20 -05:00
Makefile drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
xe_assert.h drm/xe: Accept a const xe device 2023-12-21 11:41:16 -05:00
xe_bb_types.h
xe_bb.c drm/xe: Extract MI_* instructions to their own header 2023-12-21 11:43:00 -05:00
xe_bb.h drm/xe: standardize vm-less kernel submissions 2023-12-21 11:40:27 -05:00
xe_bo_doc.h
xe_bo_evict.c drm/xe: Use Xe assert macros instead of XE_WARN_ON macro 2023-12-21 11:41:08 -05:00
xe_bo_evict.h
xe_bo_types.h drm/xe: Add tracking support for bos per client 2023-12-21 11:41:15 -05:00
xe_bo.c drm/xe: Align size to PAGE_SIZE 2023-12-21 11:41:16 -05:00
xe_bo.h drm/xe: fix pat[2] programming with 2M/1G pages 2023-12-21 11:43:19 -05:00
xe_debugfs.c drm/xe: Introduce fault injection for gt reset 2023-12-21 11:39:15 -05:00
xe_debugfs.h
xe_devcoredump_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_devcoredump.c drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_devcoredump.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_device_sysfs.c drm/xe/pm: Add vram_d3cold_threshold Sysfs 2023-12-21 11:37:35 -05:00
xe_device_sysfs.h drm/xe/pm: Add vram_d3cold_threshold Sysfs 2023-12-21 11:37:35 -05:00
xe_device_types.h drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
xe_device.c drm/xe/uapi: Remove MMIO ioctl 2023-12-21 11:43:10 -05:00
xe_device.h drm/xe/uc: Rename guc_submission_enabled() to uc_enabled() 2023-12-21 11:41:13 -05:00
xe_dma_buf.c drm/xe: Disallow pinning dma-bufs in VRAM 2023-12-21 11:41:14 -05:00
xe_dma_buf.h
xe_drm_client.c drm/xe: Implement fdinfo memory stats printing 2023-12-21 11:41:15 -05:00
xe_drm_client.h drm/xe: Add tracking support for bos per client 2023-12-21 11:41:15 -05:00
xe_drv.h drm/xe: Remove unused define 2023-12-19 18:33:50 -05:00
xe_exec_queue_types.h drm/xe: Fix VM bind out-sync signaling ordering 2023-12-21 11:43:18 -05:00
xe_exec_queue.c drm/xe/xe_exec_queue: Add check for access counter granularity 2023-12-21 11:43:31 -05:00
xe_exec_queue.h drm/xe: Fix VM bind out-sync signaling ordering 2023-12-21 11:43:18 -05:00
xe_exec.c drm/xe: Remove async worker and rework sync binds 2023-12-21 11:43:17 -05:00
xe_exec.h
xe_execlist_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_execlist.c drm/xe: Extract MI_* instructions to their own header 2023-12-21 11:43:00 -05:00
xe_execlist.h drm/xe: Cleanup style warnings 2023-12-21 11:37:31 -05:00
xe_force_wake_types.h drm/xe: Use spinlock in forcewake instead of mutex 2023-12-21 11:41:13 -05:00
xe_force_wake.c drm/xe: Use spinlock in forcewake instead of mutex 2023-12-21 11:41:13 -05:00
xe_force_wake.h drm/xe: Use Xe assert macros instead of XE_WARN_ON macro 2023-12-21 11:41:08 -05:00
xe_gen_wa_oob.c drm/xe: Add support for OOB workarounds 2023-12-19 18:34:03 -05:00
xe_ggtt_types.h drm/xe: directly use pat_index for pte_encode 2023-12-21 11:42:58 -05:00
xe_ggtt.c drm/xe: directly use pat_index for pte_encode 2023-12-21 11:42:58 -05:00
xe_ggtt.h drm/xe: Use vfunc for ggtt pte encoding 2023-12-21 11:41:20 -05:00
xe_gpu_scheduler_types.h
xe_gpu_scheduler.c
xe_gpu_scheduler.h
xe_gt_clock.c drm/xe: Get GT clock to nanosecs 2023-12-21 11:41:13 -05:00
xe_gt_clock.h drm/xe: Get GT clock to nanosecs 2023-12-21 11:41:13 -05:00
xe_gt_debugfs.c drm/xe/debugfs: Add dump of default LRCs' MI instructions 2023-12-21 11:43:00 -05:00
xe_gt_debugfs.h
xe_gt_idle_sysfs_types.h drm/xe: add a new sysfs directory for gtidle properties 2023-12-21 11:35:00 -05:00
xe_gt_idle_sysfs.c drm/xe/mtl: Add support to get C6 residency/status of MTL 2023-12-21 11:35:02 -05:00
xe_gt_idle_sysfs.h drm/xe: add a new sysfs directory for gtidle properties 2023-12-21 11:35:00 -05:00
xe_gt_mcr.c drm/xe/mmio: Account for GSI offset when checking ranges 2023-12-21 11:41:06 -05:00
xe_gt_mcr.h drm/xe: Introduce xe_reg/xe_reg_mcr 2023-12-19 18:32:21 -05:00
xe_gt_pagefault.c drm/xe: Replace XE_WARN_ON with drm_warn when just printing a string 2023-12-21 11:41:07 -05:00
xe_gt_pagefault.h drm/xe: Break of TLB invalidation into its own file 2023-12-19 18:27:45 -05:00
xe_gt_printk.h drm/xe: Add backpointer from gt to tile 2023-12-19 18:34:11 -05:00
xe_gt_sysfs_types.h
xe_gt_sysfs.c drm/xe: Cleanup style warnings and errors 2023-12-21 11:37:52 -05:00
xe_gt_sysfs.h drm/xe: make GT sysfs init return void 2023-12-21 11:35:07 -05:00
xe_gt_tlb_invalidation_types.h drm/xe: Add TDR for invalidation fence timeout cleanup 2023-12-19 18:27:46 -05:00
xe_gt_tlb_invalidation.c drm/xe: Use Xe assert macros instead of XE_WARN_ON macro 2023-12-21 11:41:08 -05:00
xe_gt_tlb_invalidation.h drm/xe: Use GuC to do GGTT invalidations for the GuC firmware 2023-12-19 18:27:47 -05:00
xe_gt_topology.c drm/xe/xe2: Add GT topology readout 2023-12-21 11:40:24 -05:00
xe_gt_topology.h drm/xe: Fix check for platform without geometry pipeline 2023-12-21 11:34:42 -05:00
xe_gt_types.h drm/xe/uapi: Replace useless 'instance' per unique gt_id 2023-12-21 11:43:18 -05:00
xe_gt.c drm/xe: Emit SVG state on RCS during driver load on DG2 and MTL 2023-12-21 11:43:22 -05:00
xe_gt.h drm/xe: Introduce fault injection for gt reset 2023-12-21 11:39:15 -05:00
xe_guc_ads_types.h
xe_guc_ads.c drm/xe/mocs: MOCS registers are multicast on Xe_HP and beyond 2023-12-21 11:43:22 -05:00
xe_guc_ads.h
xe_guc_ct_types.h drm/xe: Remove ct->fence_context 2023-12-21 11:39:16 -05:00
xe_guc_ct.c drm/xe: Add event tracing for CTB 2023-12-21 11:43:19 -05:00
xe_guc_ct.h drm/xe: Remove XE_GUC_CT_SELFTEST 2023-12-21 11:39:16 -05:00
xe_guc_debugfs.c drm/xe: Remove XE_GUC_CT_SELFTEST 2023-12-21 11:39:16 -05:00
xe_guc_debugfs.h
xe_guc_exec_queue_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_guc_fwif.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_guc_hwconfig.c drm/xe: Prefer WARN() over BUG() to avoid crashing the kernel 2023-12-21 11:39:17 -05:00
xe_guc_hwconfig.h
xe_guc_log_types.h
xe_guc_log.c drm/xe: Use Xe assert macros instead of XE_WARN_ON macro 2023-12-21 11:41:08 -05:00
xe_guc_log.h
xe_guc_pc_types.h drm/xe: Sort includes 2023-12-19 18:29:20 -05:00
xe_guc_pc.c drm/xe: Extend rpX values extraction for future platforms 2023-12-21 11:43:22 -05:00
xe_guc_pc.h drm/xe: nuke GuC on unload 2023-12-21 11:40:28 -05:00
xe_guc_submit_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_guc_submit.c drm/xe: Ensure mutex are destroyed 2023-12-21 11:41:21 -05:00
xe_guc_submit.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_guc_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_guc.c drm/xe/uc: Fix uC status tracking 2023-12-21 11:41:14 -05:00
xe_guc.h drm/xe: base definitions for the GSCCS 2023-12-21 11:40:20 -05:00
xe_heci_gsc.c drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
xe_heci_gsc.h drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
xe_huc_debugfs.c drm/xe: Rely on kmalloc/kzalloc log message 2023-12-21 11:37:51 -05:00
xe_huc_debugfs.h
xe_huc_types.h
xe_huc.c drm/xe/huc: Don't re-auth HuC if it's already authenticated 2023-12-21 11:43:23 -05:00
xe_huc.h
xe_hw_engine_class_sysfs.c drm/xe: Add min/max cap for engine scheduler properties 2023-12-21 11:39:28 -05:00
xe_hw_engine_class_sysfs.h drm/xe: Add min/max cap for engine scheduler properties 2023-12-21 11:39:28 -05:00
xe_hw_engine_types.h drm/xe: Remove devcoredump readout of IPEIR 2023-12-21 11:42:09 -05:00
xe_hw_engine.c drm/xe: Add infrastructure for per engine tuning 2023-12-21 11:42:10 -05:00
xe_hw_engine.h drm/xe: Add CONFIG_DRM_XE_PREEMPT_TIMEOUT 2023-12-21 11:40:20 -05:00
xe_hw_fence_types.h drm/xe: Sort includes 2023-12-19 18:29:20 -05:00
xe_hw_fence.c drm/xe: Prefer WARN() over BUG() to avoid crashing the kernel 2023-12-21 11:39:17 -05:00
xe_hw_fence.h drm/xe: Use a small negative initial seqno 2023-12-19 18:30:13 -05:00
xe_hwmon.c drm/xe/hwmon: fix uaf on unload 2023-12-21 11:42:10 -05:00
xe_hwmon.h drm/xe/hwmon: Expose power attributes 2023-12-21 11:42:08 -05:00
xe_irq.c drm/xe/gsc: add gsc device support 2023-12-21 11:43:00 -05:00
xe_irq.h drm/xe: Replace xe_gt_irq_postinstall with xe_irq_enable_hwe 2023-12-19 18:34:19 -05:00
xe_lrc_types.h drm/xe: Memory allocations are tile-based, not GT-based 2023-12-19 18:34:14 -05:00
xe_lrc.c drm/xe/xe2: Update SVG state handling 2023-12-21 11:43:22 -05:00
xe_lrc.h drm/xe: Prepare to emit non-register state while recording default LRC 2023-12-21 11:43:22 -05:00
xe_macros.h drm/xe: Prefer WARN() over BUG() to avoid crashing the kernel 2023-12-21 11:39:17 -05:00
xe_map.h drm/xe: Cleanup style warnings and errors 2023-12-21 11:37:52 -05:00
xe_migrate_doc.h drm/xe/migrate: Fix number of PT structs in docbook 2023-12-19 18:29:44 -05:00
xe_migrate.c drm/xe/migrate: fix MI_ARB_ON_OFF usage 2023-12-21 11:43:31 -05:00
xe_migrate.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_mmio.c drm/xe/uapi: Remove MMIO ioctl 2023-12-21 11:43:10 -05:00
xe_mmio.h drm/xe/uapi: Remove MMIO ioctl 2023-12-21 11:43:10 -05:00
xe_mocs.c drm/xe/mocs: MOCS registers are multicast on Xe_HP and beyond 2023-12-21 11:43:22 -05:00
xe_mocs.h drm/xe: Adjust mocs field mask definitions 2023-12-21 11:42:03 -05:00
xe_module.c drm/xe/uc: Add GuC/HuC firmware path overrides 2023-12-21 11:41:14 -05:00
xe_module.h drm/xe/uc: Add GuC/HuC firmware path overrides 2023-12-21 11:41:14 -05:00
xe_pat.c drm/xe/pat: trim the xelp PAT table 2023-12-21 11:42:58 -05:00
xe_pat.h drm/xe/pat: Add debugfs node to dump PAT 2023-12-21 11:42:57 -05:00
xe_pci_types.h drm/xe: add MMIO extension support flags 2023-12-21 11:42:59 -05:00
xe_pci.c drm/xe/uapi: Replace useless 'instance' per unique gt_id 2023-12-21 11:43:18 -05:00
xe_pci.h drm/xe: Move test infra out of xe_pci.[ch] 2023-12-19 18:31:31 -05:00
xe_pcode_api.h drm/xe/hwmon: Expose card reactive critical power 2023-12-21 11:42:08 -05:00
xe_pcode.c drm/xe: Ensure mutex are destroyed 2023-12-21 11:41:21 -05:00
xe_pcode.h drm/xe/hwmon: Expose card reactive critical power 2023-12-21 11:42:08 -05:00
xe_platform_types.h drm/xe/rpls: Add RPLS Support 2023-12-21 11:42:58 -05:00
xe_pm.c drm/xe: do not register to PM if GuC is disabled 2023-12-21 11:41:21 -05:00
xe_pm.h drm/xe: Move d3cold_allowed decision all together. 2023-12-21 11:39:15 -05:00
xe_pmu_types.h drm/xe/pmu: Enable PMU interface 2023-12-21 11:41:13 -05:00
xe_pmu.c drm/xe/pmu: Enable PMU interface 2023-12-21 11:41:13 -05:00
xe_pmu.h drm/xe/pmu: Enable PMU interface 2023-12-21 11:41:13 -05:00
xe_preempt_fence_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_preempt_fence.c drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_preempt_fence.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_pt_types.h drm/xe: directly use pat_index for pte_encode 2023-12-21 11:42:58 -05:00
xe_pt_walk.c
xe_pt_walk.h
xe_pt.c drm/xe: Set PTE_AE for smem allocations in integrated devices 2023-12-21 11:42:59 -05:00
xe_pt.h drm/xe: Use vfunc for pte/pde ppgtt encoding 2023-12-21 11:41:19 -05:00
xe_query.c drm/xe/uapi: Fix naming of XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 2023-12-21 11:43:18 -05:00
xe_query.h
xe_range_fence.c drm/xe: Introduce a range-fence utility 2023-12-21 11:37:52 -05:00
xe_range_fence.h drm/xe: Introduce a range-fence utility 2023-12-21 11:37:52 -05:00
xe_reg_sr_types.h drm/xe: Plumb xe_reg into WAs, rtp, etc 2023-12-19 18:32:21 -05:00
xe_reg_sr.c drm/xe/reg_sr: Use xe_gt_dbg 2023-12-21 11:41:03 -05:00
xe_reg_sr.h drm/xe/reg_sr: Use a single parameter for xe_reg_sr_apply_whitelist() 2023-12-19 18:35:20 -05:00
xe_reg_whitelist.c drm/xe/pvc: Blacklist BCS_SWCTRL register 2023-12-21 11:40:27 -05:00
xe_reg_whitelist.h drm/xe/debugfs: Dump register save-restore tables 2023-12-19 18:29:47 -05:00
xe_res_cursor.h drm/xe: Simplify xe_res_get_buddy() 2023-12-21 11:43:19 -05:00
xe_ring_ops_types.h
xe_ring_ops.c drm/xe/migrate: fix MI_ARB_ON_OFF usage 2023-12-21 11:43:31 -05:00
xe_ring_ops.h
xe_rtp_helpers.h drm/xe: Cleanup SPACING style issues 2023-12-21 11:37:30 -05:00
xe_rtp_types.h drm/xe/reg_sr: Simplify check for masked registers 2023-12-21 11:41:03 -05:00
xe_rtp.c drm/xe: Fix check for platform without geometry pipeline 2023-12-21 11:34:42 -05:00
xe_rtp.h drm/xe/rtp: Fix doc for XE_RTP_ACTIONS 2023-12-21 11:42:57 -05:00
xe_sa_types.h
xe_sa.c drm/xe: Cleanup style warnings 2023-12-21 11:37:31 -05:00
xe_sa.h drm/xe: Memory allocations are tile-based, not GT-based 2023-12-19 18:34:14 -05:00
xe_sched_job_types.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_sched_job.c drm/xe: Use Xe assert macros instead of XE_WARN_ON macro 2023-12-21 11:41:08 -05:00
xe_sched_job.h drm/xe: Rename engine to exec_queue 2023-12-21 11:39:20 -05:00
xe_step_types.h drm/xe: Add stepping support for GMD_ID platforms 2023-12-19 18:34:01 -05:00
xe_step.c drm/xe/rpls: Add Stepping info for RPLS 2023-12-21 11:42:58 -05:00
xe_step.h drm/xe: Add stepping support for GMD_ID platforms 2023-12-19 18:34:01 -05:00
xe_sync_types.h
xe_sync.c drm/xe: Remove async worker and rework sync binds 2023-12-21 11:43:17 -05:00
xe_sync.h drm/xe: Remove async worker and rework sync binds 2023-12-21 11:43:17 -05:00
xe_tile_sysfs_types.h drm/xe: Add sysfs entry for tile 2023-12-21 11:35:06 -05:00
xe_tile_sysfs.c drm/xe: Add sysfs entry to report per tile memory size 2023-12-21 11:35:06 -05:00
xe_tile_sysfs.h drm/xe: Add sysfs entry for tile 2023-12-21 11:35:06 -05:00
xe_tile.c drm/xe/wa: Apply tile workarounds at probe/resume 2023-12-21 11:41:14 -05:00
xe_tile.h drm/xe: Add sysfs entry for tile 2023-12-21 11:35:06 -05:00
xe_trace.c
xe_trace.h drm/xe/trace: Optimize trace definition 2023-12-21 11:43:21 -05:00
xe_ttm_stolen_mgr.c drm/xe/xe2: Extend reserved stolen sizes 2023-12-21 11:42:03 -05:00
xe_ttm_stolen_mgr.h drm/xe: add xe_ttm_stolen_cpu_access_needs_ggtt() 2023-12-19 18:29:47 -05:00
xe_ttm_sys_mgr.c drm/xe: Limit the system memory size to half of the system memory 2023-12-19 18:31:42 -05:00
xe_ttm_sys_mgr.h drm/xe: fix pvc unload issue 2023-12-19 18:31:30 -05:00
xe_ttm_vram_mgr_types.h drm/xe: Move VRAM from GT to tile 2023-12-19 18:34:11 -05:00
xe_ttm_vram_mgr.c drm/xe: Add a missing mutex_destroy to xe_ttm_vram_mgr 2023-12-21 11:41:21 -05:00
xe_ttm_vram_mgr.h drm/xe/uapi: add the userspace bits for small-bar 2023-12-21 11:37:54 -05:00
xe_tuning.c drm/xe: Add performance tuning settings for MTL and Xe2 2023-12-21 11:43:19 -05:00
xe_tuning.h drm/xe: Add infrastructure for per engine tuning 2023-12-21 11:42:10 -05:00
xe_uc_debugfs.c
xe_uc_debugfs.h
xe_uc_fw_abi.h drm/xe/huc: Extract version and binary offset from new HuC headers 2023-12-21 11:43:22 -05:00
xe_uc_fw_types.h drm/xe/huc: Extract version and binary offset from new HuC headers 2023-12-21 11:43:22 -05:00
xe_uc_fw.c drm/xe/huc: Define HuC for MTL 2023-12-21 11:43:23 -05:00
xe_uc_fw.h drm/xe/huc: Extract version and binary offset from new HuC headers 2023-12-21 11:43:22 -05:00
xe_uc_types.h
xe_uc.c drm/xe/uc: Fix uC status tracking 2023-12-21 11:41:14 -05:00
xe_uc.h drm/xe: nuke GuC on unload 2023-12-21 11:40:28 -05:00
xe_vm_doc.h drm/xe: Cleanup style warnings 2023-12-21 11:37:31 -05:00
xe_vm_madvise.c drm/xe: Replace XE_WARN_ON with drm_warn when just printing a string 2023-12-21 11:41:07 -05:00
xe_vm_madvise.h
xe_vm_types.h drm/xe: Remove async worker and rework sync binds 2023-12-21 11:43:17 -05:00
xe_vm.c drm/xe: fix pat[2] programming with 2M/1G pages 2023-12-21 11:43:19 -05:00
xe_vm.h drm/xe: Remove async worker and rework sync binds 2023-12-21 11:43:17 -05:00
xe_wa_oob.rules drm/xe/wa: Apply tile workarounds at probe/resume 2023-12-21 11:41:14 -05:00
xe_wa.c drm/xe/xelpmp: Extend Wa_22016670082 to Xe_LPM+ 2023-12-21 11:43:31 -05:00
xe_wa.h drm/xe/wa: Apply tile workarounds at probe/resume 2023-12-21 11:41:14 -05:00
xe_wait_user_fence.c drm/xe/uapi: Kill DRM_XE_UFENCE_WAIT_VM_ERROR 2023-12-21 11:43:17 -05:00
xe_wait_user_fence.h
xe_wopcm_types.h
xe_wopcm.c drm/xe/uc: Fix uC status tracking 2023-12-21 11:41:14 -05:00
xe_wopcm.h