arch/powerpc/perf/hv-gpci-requests.h
Source file repositories/reference/linux-study-clean/arch/powerpc/perf/hv-gpci-requests.h
File Facts
- System
- Linux kernel
- Corpus path
arch/powerpc/perf/hv-gpci-requests.h- Extension
.h- Size
- 8468 bytes
- Lines
- 267
- Domain
- Architecture Layer
- Bucket
- arch/powerpc
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
Dependency Surface
req-gen/_begin.hreq-gen/_end.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
#include "req-gen/_begin.h"
/*
* Based on the document "getPerfCountInfo v1.07"
*/
/*
* #define REQUEST_NAME counter_request_name
* #define REQUEST_NUM r_num
* #define REQUEST_IDX_KIND starting_index_kind
* #include I(REQUEST_BEGIN)
* REQUEST(
* __field(...)
* __field(...)
* __array(...)
* __count(...)
* )
* #include I(REQUEST_END)
*
* - starting_index_kind is one of the following, depending on the event:
*
* hw_chip_id: hardware chip id or -1 for current hw chip
* partition_id
* sibling_part_id,
* phys_processor_idx:
* 0xffffffffffffffff: or -1, which means it is irrelavant for the event
*
* __count(offset, bytes, name):
* a counter that should be exposed via perf
* __field(offset, bytes, name)
* a normal field
* __array(offset, bytes, name)
* an array of bytes
*
*
* @bytes for __count, and __field _must_ be a numeral token
* in decimal, not an expression and not in hex.
*
*
* TODO:
* - expose secondary index (if any counter ever uses it, only 0xA0
* appears to use it right now, and it doesn't have any counters)
* - embed versioning info
* - include counter descriptions
*/
#define REQUEST_NAME dispatch_timebase_by_processor
#define REQUEST_NUM 0x10
#define REQUEST_IDX_KIND "phys_processor_idx=?"
#include I(REQUEST_BEGIN)
REQUEST(__count(0, 8, processor_time_in_timebase_cycles)
__field(0x8, 4, hw_processor_id)
__field(0xC, 2, owning_part_id)
__field(0xE, 1, processor_state)
__field(0xF, 1, version)
__field(0x10, 4, hw_chip_id)
__field(0x14, 4, phys_module_id)
__field(0x18, 4, primary_affinity_domain_idx)
__field(0x1C, 4, secondary_affinity_domain_idx)
__field(0x20, 4, processor_version)
__field(0x24, 2, logical_processor_idx)
__field(0x26, 2, reserved)
__field(0x28, 4, processor_id_register)
__field(0x2C, 4, phys_processor_idx)
)
#include I(REQUEST_END)
#define REQUEST_NAME entitled_capped_uncapped_donated_idle_timebase_by_partition
#define REQUEST_NUM 0x20
#define REQUEST_IDX_KIND "sibling_part_id=?"
#include I(REQUEST_BEGIN)
REQUEST(__field(0, 8, partition_id)
__count(0x8, 8, entitled_cycles)
__count(0x10, 8, consumed_capped_cycles)
__count(0x18, 8, consumed_uncapped_cycles)
__count(0x20, 8, cycles_donated)
__count(0x28, 8, purr_idle_cycles)
)
#include I(REQUEST_END)
#ifdef ENABLE_EVENTS_COUNTERINFO_V6
/*
* Not available for counter_info_version >= 0x8, use
* run_instruction_cycles_by_partition(0x100) instead.
*/
#define REQUEST_NAME run_instructions_run_cycles_by_partition
#define REQUEST_NUM 0x30
#define REQUEST_IDX_KIND "sibling_part_id=?"
#include I(REQUEST_BEGIN)
REQUEST(__field(0, 8, partition_id)
__count(0x8, 8, instructions_completed)
Annotation
- Immediate include surface: `req-gen/_begin.h`, `req-gen/_end.h`.
- Atlas domain: Architecture Layer / arch/powerpc.
- 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.