Re: new pc-bios/bios.bin breaks freebsd booting

From: Adrian Chadd <adrian_at_freebsd.org>
Date: Thu, 13 Dec 2012 09:46:23 -0800
Oh, phew. :)



adrian


On 13 December 2012 08:29, Luigi Rizzo <rizzo_at_iet.unipi.it> wrote:
> On Wed, Dec 12, 2012 at 09:01:01AM -0800, Adrian Chadd wrote:
>> Yes, the qemu bios people decided that they could change the ACPI
>> setup, in order to make Linux boot slightly (1 line) quieter.
>>
>> http://git.qemu.org/?p=seabios.git;a=commit;h=4540409d19a4baeec5006d925cfca19f8038a96e
>
> the qemu folks are actually being very responsive in trying to fix
> this for FreeBSD. See
>
> http://lists.nongnu.org/archive/html/qemu-devel/2012-12/msg01703.html
>
> and also the message below
>
> cheers
> luigi
>
> ----- Forwarded message from Paolo Bonzini <pbonzini_at_redhat.com> -----
>
> Date: Thu, 13 Dec 2012 14:38:45 +0100
> From: Paolo Bonzini <pbonzini_at_redhat.com>
> Subject: Re: [SeaBIOS] [PATCH] acpi: reintroduce LNKS
> To: Laszlo Ersek <lersek_at_redhat.com>
> CC: seabios_at_seabios.org, rizzo_at_iet.unipi.it,
>         Marcelo Tosatti <mtosatti_at_redhat.com>
>
> Il 13/12/2012 14:33, Laszlo Ersek ha scritto:
>>> > Unfortunately, the code after the patch is also against the spec, and it
>>> > breaks FreeBSD because it treats IRQ 9 polarity as active low without
>>> > the Interrupt() entry.  Actually, numeric _PRT entries are handled the
>>> > same in Linux and FreeBSD (as active-low).  However, under Linux it just
>>> > happens to trigger another special casing of SCI which sets SCI up from
>>> > its override entry in the MADT, ignoring the DSDT completely.
>> I won't pretend I understand what I'm talking about, but the ACPI spec
>> 5.0 says in "5.2.12.5 Interrupt Source Override Structure",
>>
>>     Interrupt Source Overrides are also necessary when an identity
>>     mapped interrupt input has a non-standard polarity.
>>
>> Hence "necessary but not sufficient", is that it?
>
> The MADT is about 8259 pins, while the _PRT entry identifies a GSI.  So
> we have the same GSI (9) specified twice.  Linux ignores the settings of
> the second entry and reuses those that came from the GSI.  The important
> bit here is this:
>
>         /* Don't set up the ACPI SCI because it's already set up */
>         if (acpi_gbl_FADT.sci_interrupt == gsi)
>                 return gsi;
>
> (And as you can see it's wrong, sci_interrupt is an 8259 interrupt not a
> GSI).
>
>> SCI_INT in the FADT is explained as
>>
>>     [...] OSPM is required to treat the ACPI SCI interrupt as a
>>     sharable, level, active low interrupt.
>>
>> which is then overridden in the MADT, stating active-high polarity.
>
> Yes, but this doesn't affect the definition of this GSI in the _PRT.  It
> is always level/active-low for a numeric entry.  Among the two
> conflicting choices, Linux happens to favor the MADT.  FreeBSD doesn't.
>
> Paolo
>
> ----- End forwarded message -----
>
>>
>>
>>
>> Adrian
>>
>> On 12 December 2012 08:07, Luigi Rizzo <rizzo_at_iet.unipi.it> wrote:
>> > it seems that qemu-1.3.0 is broken for freebsd...
>> >
>> > cheers
>> > luigi
>> >
>> > ---------- Forwarded message ----------
>> > From: Luigi Rizzo <rizzo_at_iet.unipi.it>
>> > Date: Wed, Dec 12, 2012 at 8:04 AM
>> > Subject: new pc-bios/bios.bin breaks freebsd booting
>> > To: qemu-devel_at_nongnu.org, kraxel_at_redhat.com
>> >
>> >
>> > I am not sure if it has been reported already but this commit
>> >
>> > http://git.qemu.org/?p=qemu.git;a=commitdiff;h=d7a51dbbaa70677846453f8c961590913052dd86
>> >
>> > (replacing pc-bios/bios.bin with a newer version)
>> > breaks booting of FreeBSD on recent qemu (starting roughly with qemu-
>> > 1.3.0-rc2).
>> >
>> > Using a FreeBSD host, and a FreeBSD guest,
>> > the qemu thread runs at 100% and the console is stuck
>> > after the 'pci0' probe:
>> >
>> >
>> > ...
>> > hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
>> >
>> > Timecounter "HPET" frequency 100000000 Hz quality 950
>> >
>> > Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
>> >
>> > acpi_timer0: <24-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
>> >
>> > pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
>> >
>> > pci0: <ACPI PCI bus> on pcib0
>> >
>> > Reverting the bios fixes things.
>> > I wonder if it isn't the case of reverting this change ?
>> >
>> > cheers
>> > luigi
>> >
>> >
>> >
>> > --
>> > -----------------------------------------+-------------------------------
>> >  Prof. Luigi RIZZO, rizzo_at_iet.unipi.it  . Dip. di Ing. dell'Informazione
>> >  http://www.iet.unipi.it/~luigi/        . Universita` di Pisa
>> >  TEL      +39-050-2211611               . via Diotisalvi 2
>> >  Mobile   +39-338-6809875               . 56122 PISA (Italy)
>> > -----------------------------------------+-------------------------------
>> >
>> >
>> >
>> >
>> > --
>> > -----------------------------------------+-------------------------------
>> >  Prof. Luigi RIZZO, rizzo_at_iet.unipi.it  . Dip. di Ing. dell'Informazione
>> >  http://www.iet.unipi.it/~luigi/        . Universita` di Pisa
>> >  TEL      +39-050-2211611               . via Diotisalvi 2
>> >  Mobile   +39-338-6809875               . 56122 PISA (Italy)
>> > -----------------------------------------+-------------------------------
>> > _______________________________________________
>> > freebsd-current_at_freebsd.org mailing list
>> > http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
Received on Thu Dec 13 2012 - 16:46:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:33 UTC