On Tue, Jun 18, 2024 at 05:34:21PM -0400, Michael S. Tsirkin wrote: > On Tue, Jun 18, 2024 at 02:19:25PM -0700, Nicolin Chen wrote: > > On Tue, Jun 18, 2024 at 05:14:32PM -0400, Michael S. Tsirkin wrote: > > > > @@ -306,8 +314,8 @@ build_iort(GArray *table_data, BIOSLinker *linker, > > > > VirtMachineState *vms) > > > > } > > > > > > > > /* Append the last RC -> ITS ID mapping */ > > > > - if (next_range.input_base < 0xFFFF) { > > > > - next_range.id_count = 0xFFFF - next_range.input_base; > > > > + if (next_range.input_base < 0x10000) { > > > > + next_range.id_count = 0x10000 - next_range.input_base; > > > > g_array_append_val(its_idmaps, next_range); > > > > } > > > > > > A change of logic here - I think the new one is right and old > > > one was wrong, actually. Right? > > > > Sorry, I don't quite follow that question... > > > > Doesn't a patch correct an old wrong one to a new right one? > > > > Thanks > > Nicolin > > > So if base is 0xFFFF what should happen? I think previously we > skipped an entry and that is wrong. So that's another latent > bug this patch fixes then? > Worth documenting in the commit log too.
I had noticed that -- yes, ideally it should have been "<= 0xFFFF". Yet, practically input_base can never be 0xFFFF as it's calculated: hw/arm/virt-acpi-build.c:245: .input_base = min_bus << 8, hw/arm/virt-acpi-build.c:305: next_range.input_base = idmap->input_base + idmap->id_count; The first one always sets input_base to 0xXX00 (min_bus = 0xXX). The second one, as we know for id_count, must be 0xZZ00 too since input_base from the first place must be 0xXX00 and 0xYY00 hw/arm/virt-acpi-build.c:301: next_range.id_count = idmap->input_base - next_range.input_base; So, it's a case that could never be triggered? Probably not worth highlighting IMOH... Thanks Nicolin