Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 02 Feb 2024 00:27:04 +0100
From:      Dmitry Salychev <dsl@FreeBSD.org>
To:        Jung-uk Kim <jkim@FreeBSD.org>
Cc:        Baptiste Daroussin <bapt@freebsd.org>, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 07c64d74917e - main - acpica: Import ACPICA 20230628
Message-ID:  <86jznn933q.fsf@peasant.tower.home>
In-Reply-To: <dfaeaf57-21c2-4051-bf94-9f3a8b536384@FreeBSD.org>
References:  <202401310406.40V46B9a000876@gitrepo.freebsd.org> <thik6e6mp53h242l6bhgyxkzl45jne5zhxb7retxgyvot3x6jq@v2yuxtpvczg7> <04c4a0e1-aa79-4d25-a1f7-2196cfa65578@FreeBSD.org> <86o7cz99u6.fsf@peasant.tower.home> <dfaeaf57-21c2-4051-bf94-9f3a8b536384@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

Jung-uk Kim <jkim@FreeBSD.org> writes:

> On 24. 2. 1., Dmitry Salychev wrote:
>> Hi,
>> Jung-uk Kim <jkim@FreeBSD.org> writes:
>> 
>>> On 24. 1. 31., Baptiste Daroussin wrote:
>>>> Hello,
>>>> Either this one or the previous import is breaking arm64 build
>>>> --- acpi_iort.o ---
>>>> /home/bapt/worktrees/main/sys/arm64/acpica/acpi_iort.c:103:4: error: field
>>>> 'data' with variable sized type 'union (unnamed union at
>>>> /home/bapt/worktrees/main/sys/arm64/acpica/acpi_iort.c:98:2
>>>> )' not at the end of a struct or class is a GNU extension
>>>> [-Werror,-Wgnu-variable-sized-type-not-at-end]
>>>>     103 |         } data;
>>>>           |           ^
>>>
>>> Sorry for the breakage.  I will fix it soon.
>>>
>>> BTW, this code was added by this:
>>>
>>> https://reviews.freebsd.org/D31267
>>>
>>> It seems struct iort_named_component was a hack, which duplicated
>>> ACPI_IORT_NAMED_COMPONENT but with a fixed length field
>>> DeviceName[32]. Is it really necessary?
>>>
>>> Jung-uk Kim
>> I'm struggling to understand (a) how the entire anonymous "data"
>> union
>> was added by https://reviews.freebsd.org/D31267 as was "named_comp"
>> only and (b) what the problem with the "struct iort_named_component" really
>> is as ACPI_IORT_ROOT_COMPLEX and ACPI_IORT_SMMU were re-defined as
>> incomplete types in the new version of ACPICA. Everything is compilable
>> as it used to be with the attached patch.
>
> FYI, ACPICA 20230331 dropped support for ANSI C (C89) and minimum
> requirement is C99 now.  One of the first feature they used was the
> variable-length array, which replaced "foo[1]" hack.  Previously,
> "sizeof(struct bar)" was not real size because of the (fake
> variable-length) array at the end of it.  Now they removed the hack
> and started using real variable-length arrays.  I believe the hack in
> acpi_iort.c was to work around the fake 1-byte array but it does not
> work any more because all ACPI_IORT_* are now using correct VLA.  So,
> the cleanest way to fix this is using ACPI_IORT_NAMED_COMPONENT
> instead of "struct iort_named_component" (see attached PoC patch),
> which also eliminates the need for DeviceName[32].
>
> Jung-uk Kim
>
> [2. text/x-patch; iort.diff]...

Please, open a review for your patch. I've several questions.

Regards,
Dmitry

-- 
https://wiki.freebsd.org/DmitrySalychev



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86jznn933q.fsf>