|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH v1 05/10] pmu.h: introduce a stacktrace area
On 7/25/25 5:07 PM, Edwin Török wrote:
> diff --git a/xen/arch/x86/cpu/vpmu_amd.c b/xen/arch/x86/cpu/vpmu_amd.c
> index a6117dfebf..024d0c1eb7 100644
> --- a/xen/arch/x86/cpu/vpmu_amd.c
> +++ b/xen/arch/x86/cpu/vpmu_amd.c
> @@ -543,7 +543,7 @@ static const struct arch_vpmu_ops *__init
> common_init(void)
> }
>
> if ( sizeof(struct xen_pmu_data) +
> - 2 * sizeof(uint64_t) * num_counters > PAGE_SIZE )
> + 2 * sizeof(uint64_t) * num_counters > MAX_XEN_PMU_DATA_SIZE)
> {
> printk(XENLOG_WARNING
> "VPMU: Register bank does not fit into VPMU shared page\n");
You've lost a space before the end of the parenthesis here
> diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
> index 7ce98ee42e..9c8b5c1907 100644
> --- a/xen/arch/x86/cpu/vpmu_intel.c
> +++ b/xen/arch/x86/cpu/vpmu_intel.c
> @@ -967,7 +967,7 @@ const struct arch_vpmu_ops *__init core2_vpmu_init(void)
> pmc_quirk = current_cpu_data.x86 == 6;
>
> if ( sizeof(struct xen_pmu_data) + sizeof(uint64_t) * fixed_pmc_cnt +
> - sizeof(struct xen_pmu_cntr_pair) * arch_pmc_cnt > PAGE_SIZE )
> + sizeof(struct xen_pmu_cntr_pair) * arch_pmc_cnt >
> MAX_XEN_PMU_DATA_SIZE)
> {
> printk(XENLOG_WARNING
> "VPMU: Register bank does not fit into VPMU share page\n");
and here
> diff --git a/xen/include/public/arch-x86/pmu.h
> b/xen/include/public/arch-x86/pmu.h
> index 5bd0aa6f77..bdc8218cbe 100644
> --- a/xen/include/public/arch-x86/pmu.h
> +++ b/xen/include/public/arch-x86/pmu.h
> @@ -129,67 +146,86 @@ struct xen_pmu_arch {
> typedef struct xen_pmu_arch xen_pmu_arch_t;
> DEFINE_XEN_GUEST_HANDLE(xen_pmu_arch_t);
>
> +
> /* Memory layout:
> -* ╭─────────────────────╮
> -* │ struct xen_pmu_data │
> -* ╒══════════════╧═════════════════════╧═══════════════════════╕ ◁╮
> -* │ vcpu_id │ │
> -* ├────────────────────────────────────────────────────────────┤ │
> -* │ pcpu_id │ │
> -* ├────────────────────────────────────────────────────────────┤ │
> -* │ domain_id │ │
> -* ├────────────────────────────────────────────────────────────┤ │
> -* │██pad███████████████████████████████████████████████████████│ │
> -* ╞════╤═╤═══╤══════════════════╤══════════════════════════════╡ │
> -* │ pmu│ │ r │ regs │██pad█████████████████████████│ │
> -* ├────╯ ├───╯ (xen or guest) │██████████████████████████████│ │
> -* │ ╞══════════════════════╧══════════════════════════════╡ │
> -* │ │ pmu_flags │ │
> -* │ ╞═══╤════════════════════╤════════════════════════════╡ │
> -* │ │ l │ lapic_lvtpc │████████████████████████████│ │
> -* │ ├───╯ ███████████████████│██pad███████████████████████│ │
> -* │ │ ███████████████████│████████████████████████████│ │
> -* │ ╞═══╤═╤═══════╤═════╤════╪════╤═══════╤═══════════════╡ │
> -* │ │ c │ │ │ amd │ │ │ intel │ │█████│ │
> -* │ ├───┘ │ ╰─────╯ │ ╰───────╯ │█████│ │
> -* │ │ │ counter │ fixed_counters │█████│ │
> -* │ │ ├──────────────────┼──────────────────────┤█████│ │
> -* │ │ │ ctrls │ arch_counters │█████│ │
> -* │ │ ╞═════╤════════╤═══├──────────────────────┤█████│ │
> -* │ │ │ │ regs[] │ ┆│ global_ctrl │█████│ │
> -* │ │ │ └────────╯ ┆├──────────────────────┤█████│ │
> -* │ │ │struct ┆│ global_ovf_ctrl │█████│ │
> -* │ │ │xen_pmu_cntr_pair┆├──────────────────────┤█████│ │
> -* │ │ │[counters] ┆│ global_status │█████│ │
> -* │ │ │ ┆├──────────────────────┤█████│ │
> -* │ │ │ ┆│ fixed_ctrl │█████│ │
> -* │ │ │ ┆├──────────────────────┤█████│ │
> -* │ │ │ ┆│ ds_area │█████│ │
> -* │ │ │ ┆├──────────────────────┤█████│ │
> -* │ │ │ ┆│ pebs_enable │█pad█│ │
> -* │ │ │ ┆├──────────────────────┤█████│ │
> -* │ │ │ ▽│ debugctl │█████│ │
it looks like there is a stray space character here breaking up
the vertical lines
> -* │ │ │██████████████████╞═══════╤════════╤═════╡█████│ │
> -* │ │ │██████████████████│ │ regs[] │ ┆[0]│█████│ │
> -* │ │ │██████████████████│ └────────╯ ┆ │█████│ │
> -* │ │ │██████████████████│ uint64_t ┆ │█████│ │
> -* │ │ │██████████████████│ [fixed_counters] ┆ │█████│ │
> -* │ │ │██████████████████│ ┆ │█████│ │
> -* │ │ │██████████████████│ ┆ │█████│ │
> -* │ │ │██████████████████│ ─────────────────┆ │█████│ │
> -* │ │ │██████████████████│ struct ┆ │█████│ │
> -* │ │ │██████████████████│ xen_pmu_cntr_pair┆ │█████│ │
> -* │ │ ╘══════════════════╡ [arch_counters] ┆ ╞═════╡ │
> -* │ │ │ ┆ │ │ │
> -* │ │ │ ▽ │ │ │
same here
> -* │ │ ╘══════════════════════╛ │ │
> -* │ ╘═════════════════════════════════════════════════════╡ │
> -* ╞════════════════════════════════════════════════════════════╡ │
> -* │████████████████████████████████████████████████████████████│ │
> -* ┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆ ┆
> -* ┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆ ┆
> -* │████████████████████████████████████████████████████████████│ │ PAGE_SIZE
> -* ╘════════════════════════════════════════════════════════════╛ ◁╯
> + * ╭─────────────────────╮
> + * │ struct xen_pmu_data │
> + * ╒══════════════╧═════════════════════╧═══════════════════════╕ ◁╮
> + * │ vcpu_id │ │
> + * ├────────────────────────────────────────────────────────────┤ │
> + * │ pcpu_id │ │
> + * ├────────────────────────────────────────────────────────────┤ │
> + * │ domain_id │ │
> + * ├────────────────────────────────────────────────────────────┤ │
> + * │██pad███████████████████████████████████████████████████████│ │
> + * ╞════╤═╤═══╤══════════════════╤══════════════════════════════╡ │
> + * │ pmu│ │ r │ regs │██pad█████████████████████████│ │
> + * ├────╯ ├───╯ (xen or guest) │██████████████████████████████│ │
> + * │ ╞══════════════════════╧══════════════════════════════╡ │
> + * │ │ pmu_flags │ │
> + * │ ╞═══╤════════════════════╤════════════════════════════╡ │
> + * │ │ l │ lapic_lvtpc │████████████████████████████│ │
> + * │ ├───╯ ███████████████████│██pad███████████████████████│ │
> + * │ │ ███████████████████│████████████████████████████│ │
> + * │ ╞═══╤═╤═══════╤═════╤════╪════╤═══════╤═══════════════╡ │
> + * │ │ c │ │ │ amd │ │ │ intel │ │█████│ │
> + * │ ├───┘ │ ╰─────╯ │ ╰───────╯ │█████│ │
> + * │ │ │ counter │ fixed_counters │█████│ │
> + * │ │ ├──────────────────┼──────────────────────┤█████│ │
> + * │ │ │ ctrls │ arch_counters │█████│ │
> + * │ │ ╞═════╤════════╤═══├──────────────────────┤█████│ │
> + * │ │ │ │ regs[] │ ┆│ global_ctrl │█████│ │
> + * │ │ │ └────────╯ ┆├──────────────────────┤█████│ │
> + * │ │ │struct ┆│ global_ovf_ctrl │█████│ │
> + * │ │ │xen_pmu_cntr_pair┆├──────────────────────┤█████│ │
> + * │ │ │[counters] ┆│ global_status │█████│ │
> + * │ │ │ ┆├──────────────────────┤█████│ │
> + * │ │ │ ┆│ fixed_ctrl │█████│ │
> + * │ │ │ ┆├──────────────────────┤█████│ │
> + * │ │ │ ┆│ ds_area │█████│ │
> + * │ │ │ ┆├──────────────────────┤█████│ │
> + * │ │ │ ┆│ pebs_enable │█pad█│ │
> + * │ │ │ ┆├──────────────────────┤█████│ │
> + * │ │ │ ▽│ debugctl │█████│ │
and here
> + * │ │ │██████████████████╞═══════╤════════╤═════╡█████│ │
> + * │ │ │██████████████████│ │ regs[] │ ┆[0]│█████│ │
> + * │ │ │██████████████████│ └────────╯ ┆ │█████│ │
> + * │ │ │██████████████████│ uint64_t ┆ │█████│ │
> + * │ │ │██████████████████│ [fixed_counters] ┆ │█████│ │
> + * │ │ │██████████████████│ ┆ │█████│ │
> + * │ │ │██████████████████│ ┆ │█████│ │
> + * │ │ │██████████████████│ ─────────────────┆ │█████│ │
> + * │ │ │██████████████████│ struct ┆ │█████│ │
> + * │ │ │██████████████████│ xen_pmu_cntr_pair┆ │█████│ │
> + * │ │ ╘══════════════════╡ [arch_counters] ┆ ╞═════╡ │
> + * │ │ │ ┆ │ │ │
> + * │ │ │ ▽ │ │ │
and here
> + * │ │ ╘══════════════════════╛ │ │
> + * │ ╘═════════════════════════════════════════════════════╡ │
> + * ╞════════════════════════════════════════════════════════════╡ │
> + * │████████████████████████████████████████████████████████████│ │
> + * ┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆ ┆
> + * ┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆┆ ┆
> + * │████████████████████████████████████████████████████████████│ │
> + * |############################################################| |
> + * |##########.------------------------------.##################| |
> + * |##########| struct xen_pmu_hv_stacktrace |##################| |
> + * +==========+==============================+==================+ |
> + * | ^ [stacktrace_nr-1] | |
> + * | : | |
> + * | stacktrace[stacktrace_nr] : [0] | |
> + * +------------------------------------------------------------+ |
> + * | stacktrace_nr | |
> + * +------------------------------------------------------------+ |
> + * | guest_domain_id | |
> + * +------------------------------------------------------------+ |
> + * |##pad#######################################################| |
> + * +=======+=+===+==================+===========================+ |
> + * | guest | | r | regs |##pad######################| |
> + * +-------. +---. (xen or guest) |###########################| |
> + * | +======================+===========================+ |
> + * | |##pad2############################################| |
> PAGE_SIZE
> + * +=========+==================================================+ <.
> */
>
> #endif /* __XEN_PUBLIC_ARCH_X86_PMU_H__ */
Andriy Sultanov | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |