Re: [PATCH] KVM: selftests: fix ITS collection target addresses in vgic_lpi_stress

Marc Zyngier
2025-10-17T17:06:28Z

On Fri, 17 Oct 2025 17:19:18 +0100,
Maximilian Dittgen <mdittgen@amazon.de> wrote:
>
> When mapping guest ITS collections, vgic_lpi_stress iterates over
> integers in the range [0, nr_cpus), passing them as the target_addr
> parameter to its_send_mapc_cmd(). These integers correspond to the
> selftest userspace vCPU IDs that we intend to map each ITS collection
> to.
>
> However, its_encode_target() within its_send_mapc_cmd() expects a
> vCPU's redistributor address--not the vCPU ID--as the target_addr
> parameter. This is evident from how its_encode_target() encodes the
> target_addr parameter as:
>
> its_mask_encode(&cmd->raw_cmd[2], target_addr >> 16, 51, 16)
>
> This shows that we right-shift the input target_addr parameter by 16
> bits before encoding it. This makes sense when the parameter refers to
> redistributor addresses (e.g., 0x20000, 0x30000) but not vCPU IDs
> (e.g., 0x2, 0x3).

From the KVM ITS emulation code:

* We use linear CPU numbers for redistributor addressing,
* so GITS_TYPER.PTA is 0.

It is not an address.

M.

--
Without deviation from the norm, progress is not possible.