Re: r344398 Import ACPICA 20190215: breaks bhyve

From: Conrad Meyer <cem_at_freebsd.org>
Date: Thu, 21 Feb 2019 09:15:45 -0800
Oops, to the list this time.

Hi Oleg,

Those look like the ACPI lines bhyve attempts to generate and compile
in basl_fwrite_madt():

272         /* Legacy IRQ0 is connected to pin 2 of the IOAPIC */
273         EFPRINTF(fp, "[0001]\t\tSubtable Type : 02\n");
274         EFPRINTF(fp, "[0001]\t\tLength : 0A\n");
275         EFPRINTF(fp, "[0001]\t\tBus : 00\n");
276         EFPRINTF(fp, "[0001]\t\tSource : 00\n");
277         EFPRINTF(fp, "[0004]\t\tInterrupt : 00000002\n");
278         EFPRINTF(fp, "[0002]\t\tFlags (decoded below) : 0005\n");
^^^ this line ("maximum 1 bit")
279         EFPRINTF(fp, "\t\t\tPolarity : 1\n");
280         EFPRINTF(fp, "\t\t\tTrigger Mode : 1\n");
281         EFPRINTF(fp, "\n");
282
283         EFPRINTF(fp, "[0001]\t\tSubtable Type : 02\n");
284         EFPRINTF(fp, "[0001]\t\tLength : 0A\n");
285         EFPRINTF(fp, "[0001]\t\tBus : 00\n");
286         EFPRINTF(fp, "[0001]\t\tSource : %02X\n", SCI_INT);
287         EFPRINTF(fp, "[0004]\t\tInterrupt : %08X\n", SCI_INT);
^^^ this line ("maximum 2 bit"; SCI_INT==9)
288         EFPRINTF(fp, "[0002]\t\tFlags (decoded below) : 0000\n");
289         EFPRINTF(fp, "\t\t\tPolarity : 3\n");
290         EFPRINTF(fp, "\t\t\tTrigger Mode : 3\n");
291         EFPRINTF(fp, "\n");

Would you mind filing a PR to track this investigation?

The error message and constraint on Value being in range of BitLength
was added to DtCompileFlag() in compiler/dtfield.c way back in r208625
(ACPICA 20100528) — it's not new.  What must be new is the idea that
these fields have a smaller bit width that the numbers bhyve has
chosen, or bhyve's choice of numbers.

We can eliminate bhyve as a suspect, maybe?  acpi.c hasn't changed
substantially for years.  In fact, there is a seemingly related commit
r272838 which converted some fields to hexadecimal in order to comply
with length limitations.  The first of these two tables was introduced
in r257933 by tycho_at_ / neel_at_.  The second was changed from a bare
constant by jhb_at_ in r259998, but previously held the value 9.  It
dates to the original 2012 "ACPI support for bhyve" commit by grehan_at_
in r243327.

So yeah, probably something changed recently in ACPICA.

Best,
Conrad

On Thu, Feb 21, 2019 at 8:38 AM Oleg Ginzburg <olevole_at_olevole.ru> wrote:
>
> Hi,
>
> most likely r344398[1] commit breaks bhyve with the following errors:
>
> Subtable Type : 02
> Error    6302 -           Flag value is too large ^  (Maximum 1 bit)
> 58: [0002]         Flags (decoded below) : 0005
> Error    6302 -                   Flag value is too large ^  (Maximum 2 bit)
> 66: [0004]              Interrupt : 00000009
> Error    6302 -       Flag value is too large ^  (Maximum 2 bit)
> Assertion failed: (error == 0), function main, file
> /usr/src/usr.sbin/bhyve/bhyverun.c, line 1190.
>
> Can anyone else confirm this?
>
> Howto reproduce:
>
> fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.3/FreeBSD-10.3-RELEASE-amd64-bootonly.iso
>
> sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -i -I
> FreeBSD-10.3-RELEASE-amd64-bootonly.iso guestname
>
>
> __
> [1] - https://svnweb.freebsd.org/base?view=revision&revision=r344398
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
Received on Thu Feb 21 2019 - 16:45:01 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:20 UTC