Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/xe/soc_remapper: Add system controller config for SoC remapper

Define system controller config bits and helpers for SoC remapper.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Link: https://patch.msgid.link/20251223183943.3175941-8-umesh.nerlige.ramappa@intel.com

+24 -2
+1
drivers/gpu/drm/xe/regs/xe_soc_remapper_regs.h
··· 9 9 10 10 #define SG_REMAP_INDEX1 XE_REG(SOC_BASE + 0x08) 11 11 #define SG_REMAP_TELEM_MASK REG_GENMASK(31, 24) 12 + #define SG_REMAP_SYSCTRL_MASK REG_GENMASK(23, 16) 12 13 13 14 #endif
+5
drivers/gpu/drm/xe/xe_device_types.h
··· 334 334 u8 has_pxp:1; 335 335 /** @info.has_range_tlb_inval: Has range based TLB invalidations */ 336 336 u8 has_range_tlb_inval:1; 337 + /** @info.has_soc_remapper_sysctrl: Has SoC remapper system controller */ 338 + u8 has_soc_remapper_sysctrl:1; 337 339 /** @info.has_soc_remapper_telem: Has SoC remapper telemetry support */ 338 340 u8 has_soc_remapper_telem:1; 339 341 /** @info.has_sriov: Supports SR-IOV */ ··· 589 587 590 588 /** @soc_remapper.set_telem_region: Set telemetry index */ 591 589 void (*set_telem_region)(struct xe_device *xe, u32 index); 590 + 591 + /** @soc_remapper.set_sysctrl_region: Set system controller index */ 592 + void (*set_sysctrl_region)(struct xe_device *xe, u32 index); 592 593 } soc_remapper; 593 594 594 595 /**
+2
drivers/gpu/drm/xe/xe_pci.c
··· 422 422 .has_mbx_power_limits = true, 423 423 .has_mert = true, 424 424 .has_pre_prod_wa = 1, 425 + .has_soc_remapper_sysctrl = true, 425 426 .has_soc_remapper_telem = true, 426 427 .has_sriov = true, 427 428 .max_gt_per_tile = 2, ··· 695 694 xe->info.has_page_reclaim_hw_assist = desc->has_page_reclaim_hw_assist; 696 695 xe->info.has_pre_prod_wa = desc->has_pre_prod_wa; 697 696 xe->info.has_pxp = desc->has_pxp; 697 + xe->info.has_soc_remapper_sysctrl = desc->has_soc_remapper_sysctrl; 698 698 xe->info.has_soc_remapper_telem = desc->has_soc_remapper_telem; 699 699 xe->info.has_sriov = xe_configfs_primary_gt_allowed(to_pci_dev(xe->drm.dev)) && 700 700 desc->has_sriov;
+1
drivers/gpu/drm/xe/xe_pci_types.h
··· 53 53 u8 has_pre_prod_wa:1; 54 54 u8 has_page_reclaim_hw_assist:1; 55 55 u8 has_pxp:1; 56 + u8 has_soc_remapper_sysctrl:1; 56 57 u8 has_soc_remapper_telem:1; 57 58 u8 has_sriov:1; 58 59 u8 needs_scratch:1;
+15 -2
drivers/gpu/drm/xe/xe_soc_remapper.c
··· 20 20 REG_FIELD_PREP(SG_REMAP_TELEM_MASK, index)); 21 21 } 22 22 23 + static void xe_soc_remapper_set_sysctrl_region(struct xe_device *xe, u32 index) 24 + { 25 + xe_soc_remapper_set_region(xe, SG_REMAP_INDEX1, SG_REMAP_SYSCTRL_MASK, 26 + REG_FIELD_PREP(SG_REMAP_SYSCTRL_MASK, index)); 27 + } 28 + 23 29 /** 24 30 * xe_soc_remapper_init() - Initialize SoC remapper 25 31 * @xe: Pointer to xe device. ··· 36 30 */ 37 31 int xe_soc_remapper_init(struct xe_device *xe) 38 32 { 39 - if (xe->info.has_soc_remapper_telem) { 33 + bool has_soc_remapper = xe->info.has_soc_remapper_telem || 34 + xe->info.has_soc_remapper_sysctrl; 35 + 36 + if (has_soc_remapper) 40 37 spin_lock_init(&xe->soc_remapper.lock); 38 + 39 + if (xe->info.has_soc_remapper_telem) 41 40 xe->soc_remapper.set_telem_region = xe_soc_remapper_set_telem_region; 42 - } 41 + 42 + if (xe->info.has_soc_remapper_sysctrl) 43 + xe->soc_remapper.set_sysctrl_region = xe_soc_remapper_set_sysctrl_region; 43 44 44 45 return 0; 45 46 }