drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c- Extension
.c- Size
- 31590 bytes
- Lines
- 1066
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bsearch.hgem/i915_gem_lmem.hgt/intel_engine_regs.hgt/intel_gt.hgt/intel_gt_mcr.hgt/intel_gt_regs.hgt/intel_lrc.hgt/shmem_utils.hintel_guc_ads.hintel_guc_capture.hintel_guc_fwif.hintel_guc_print.hintel_uc.hi915_drv.h
Detected Declarations
struct __guc_ads_blobstruct temp_regsetfunction guc_ads_regset_sizefunction guc_ads_golden_ctxt_sizefunction guc_ads_waklv_sizefunction guc_ads_capture_sizefunction guc_ads_private_data_sizefunction guc_ads_regset_offsetfunction guc_ads_golden_ctxt_offsetfunction guc_ads_waklv_offsetfunction guc_ads_capture_offsetfunction guc_ads_private_data_offsetfunction guc_ads_blob_sizefunction guc_policies_initfunction intel_guc_ads_print_policy_infofunction guc_action_policies_updatefunction intel_guc_global_policies_updatefunction guc_mapping_table_initfunction for_each_enginefunction guc_mmio_reg_cmpfunction __mmio_reg_addfunction guc_mmio_reg_addfunction i915_mmio_reg_offsetfunction guc_mmio_regset_initfunction guc_mmio_reg_state_createfunction for_each_enginefunction guc_mmio_reg_state_initfunction for_each_enginefunction fill_engine_enable_masksfunction guc_prep_golden_contextfunction for_each_enginefunction guc_init_golden_contextfunction guc_get_capture_engine_maskfunction guc_capture_prep_listsfunction guc_waklv_enable_simplefunction guc_waklv_initfunction guc_prep_waklvfunction __guc_ads_initfunction intel_guc_ads_createfunction intel_guc_ads_init_latefunction intel_guc_ads_destroyfunction guc_ads_private_data_resetfunction intel_guc_ads_resetfunction intel_guc_engine_usage_offsetfunction intel_guc_engine_usage_record_map
Annotated Snippet
struct __guc_ads_blob {
struct guc_ads ads;
struct guc_policies policies;
struct guc_gt_system_info system_info;
struct guc_engine_usage engine_usage;
/* From here on, location is dynamic! Refer to above diagram. */
struct guc_mmio_reg regset[];
} __packed;
#define ads_blob_read(guc_, field_) \
iosys_map_rd_field(&(guc_)->ads_map, 0, struct __guc_ads_blob, field_)
#define ads_blob_write(guc_, field_, val_) \
iosys_map_wr_field(&(guc_)->ads_map, 0, struct __guc_ads_blob, \
field_, val_)
#define info_map_write(map_, field_, val_) \
iosys_map_wr_field(map_, 0, struct guc_gt_system_info, field_, val_)
#define info_map_read(map_, field_) \
iosys_map_rd_field(map_, 0, struct guc_gt_system_info, field_)
static u32 guc_ads_regset_size(struct intel_guc *guc)
{
GEM_BUG_ON(!guc->ads_regset_size);
return guc->ads_regset_size;
}
static u32 guc_ads_golden_ctxt_size(struct intel_guc *guc)
{
return PAGE_ALIGN(guc->ads_golden_ctxt_size);
}
static u32 guc_ads_waklv_size(struct intel_guc *guc)
{
return PAGE_ALIGN(guc->ads_waklv_size);
}
static u32 guc_ads_capture_size(struct intel_guc *guc)
{
return PAGE_ALIGN(guc->ads_capture_size);
}
static u32 guc_ads_private_data_size(struct intel_guc *guc)
{
return PAGE_ALIGN(guc->fw.private_data_size);
}
static u32 guc_ads_regset_offset(struct intel_guc *guc)
{
return offsetof(struct __guc_ads_blob, regset);
}
static u32 guc_ads_golden_ctxt_offset(struct intel_guc *guc)
{
u32 offset;
offset = guc_ads_regset_offset(guc) +
guc_ads_regset_size(guc);
return PAGE_ALIGN(offset);
}
static u32 guc_ads_waklv_offset(struct intel_guc *guc)
{
u32 offset;
offset = guc_ads_golden_ctxt_offset(guc) +
guc_ads_golden_ctxt_size(guc);
return PAGE_ALIGN(offset);
}
static u32 guc_ads_capture_offset(struct intel_guc *guc)
{
u32 offset;
offset = guc_ads_waklv_offset(guc) +
guc_ads_waklv_size(guc);
return PAGE_ALIGN(offset);
}
static u32 guc_ads_private_data_offset(struct intel_guc *guc)
{
u32 offset;
offset = guc_ads_capture_offset(guc) +
guc_ads_capture_size(guc);
Annotation
- Immediate include surface: `linux/bsearch.h`, `gem/i915_gem_lmem.h`, `gt/intel_engine_regs.h`, `gt/intel_gt.h`, `gt/intel_gt_mcr.h`, `gt/intel_gt_regs.h`, `gt/intel_lrc.h`, `gt/shmem_utils.h`.
- Detected declarations: `struct __guc_ads_blob`, `struct temp_regset`, `function guc_ads_regset_size`, `function guc_ads_golden_ctxt_size`, `function guc_ads_waklv_size`, `function guc_ads_capture_size`, `function guc_ads_private_data_size`, `function guc_ads_regset_offset`, `function guc_ads_golden_ctxt_offset`, `function guc_ads_waklv_offset`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.