On Wed, Jan 12, 2022 at 08:46:16PM +0530, Ani Sinha wrote: > > > On Wed, 12 Jan 2022, Michael S. Tsirkin wrote: > > > On Wed, Jan 12, 2022 at 08:03:31AM -0500, Igor Mammedov wrote: > > > Commit [2] broke original '\0' padding of OEM ID and OEM Table ID > > > fields in headers of ACPI tables. While it doesn't have impact on > > > default values since QEMU uses 6 and 8 characters long values > > > respectively, it broke usecase where IDs are provided on QEMU CLI. > > > It shouldn't affect guest (but may cause licensing verification > > > issues in guest OS). > > > One of the broken usecases is user supplied SLIC table with IDs > > > shorter than max possible length, where [2] mangles IDs with extra > > > spaces in RSDT and FADT tables whereas guest OS expects those to > > > mirror the respective values of the used SLIC table. > > > > > > Fix it by replacing whitespace padding with '\0' padding in > > > accordance with [1] and expectations of guest OS > > > > > > 1) ACPI spec, v2.0b > > > 17.2 AML Grammar Definition > > > ... > > > //OEM ID of up to 6 characters. If the OEM ID is > > > //shorter than 6 characters, it can be terminated > > > //with a NULL character. > > > > > > 2) > > > Fixes: 602b458201 ("acpi: Permit OEM ID and OEM table ID fields to be > > > changed") > > > > > > and add: > > > > Fixes: https://gitlab.com/qemu-project/qemu/-/issues/707 > > He did that already with the "Resolves:" line below.
oh sorry > > > > ? > > > > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/707 > > > Reported-by: Dmitry V. Orekhov <dima.orek...@gmail.com> > > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > > > Cc: qemu-sta...@nongnu.org > > > --- > > > hw/acpi/aml-build.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c > > > index b3b3310df3..65148d5b9d 100644 > > > --- a/hw/acpi/aml-build.c > > > +++ b/hw/acpi/aml-build.c > > > @@ -1724,9 +1724,9 @@ void acpi_table_begin(AcpiTable *desc, GArray > > > *array) > > > build_append_int_noprefix(array, 0, 4); /* Length */ > > > build_append_int_noprefix(array, desc->rev, 1); /* Revision */ > > > build_append_int_noprefix(array, 0, 1); /* Checksum */ > > > - build_append_padded_str(array, desc->oem_id, 6, ' '); /* OEMID */ > > > + build_append_padded_str(array, desc->oem_id, 6, '\0'); /* OEMID */ > > > /* OEM Table ID */ > > > - build_append_padded_str(array, desc->oem_table_id, 8, ' '); > > > + build_append_padded_str(array, desc->oem_table_id, 8, '\0'); > > > build_append_int_noprefix(array, 1, 4); /* OEM Revision */ > > > g_array_append_vals(array, ACPI_BUILD_APPNAME8, 4); /* Creator ID */ > > > build_append_int_noprefix(array, 1, 4); /* Creator Revision */ > > > -- > > > 2.31.1 > > > >