On Wed, Dec 12, 2012 at 06:47:58PM +0100, Paolo Bonzini wrote: > Il 12/12/2012 17:04, Luigi Rizzo ha scritto: > > 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 ? > > Not reverting the change (which fixes other things), but yes---we should > get the fix into SeaBIOS. > > I don't have a FreeBSD VM handy, can you try the attached BIOS so I can > have your Tested-by? The patch I used is after my signature.
thanks, the attached bios successfully boots a FreeBSD guest Tested-by: Luigi Rizzo <ri...@iet.unipi.it> cheers luigi > Paolo > > diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl > index 8019b71..b58ef62 100644 > --- a/src/acpi-dsdt.dsl > +++ b/src/acpi-dsdt.dsl > @@ -187,7 +187,7 @@ DefinitionBlock ( > > prt_slot0(0x0000), > /* Device 1 is power mgmt device, and can only use irq 9 */ > - Package() { 0x1ffff, 0, 0, 9 }, > + Package() { 0x1ffff, 0, LNKS, 0 }, > Package() { 0x1ffff, 1, LNKB, 0 }, > Package() { 0x1ffff, 2, LNKC, 0 }, > Package() { 0x1ffff, 3, LNKD, 0 }, > @@ -278,6 +278,22 @@ DefinitionBlock ( > define_link(LNKB, 1, PRQ1) > define_link(LNKC, 2, PRQ2) > define_link(LNKD, 3, PRQ3) > + > + Device(LNKS) { > + Name(_HID, EISAID("PNP0C0F")) > + Name(_UID, 4) > + Name(_PRS, ResourceTemplate() { > + Interrupt(, Level, ActiveHigh, Shared) { 9 } > + }) > + > + // The SCI cannot be disabled and is always attached to GSI 9, > + // so these are no-ops. We only need this link to override the > + // polarity to active high and match the content of the MADT. > + Method(_STA, 0, NotSerialized) { Return (0x0b) } > + Method(_DIS, 0, NotSerialized) { } > + Method(_CRS, 0, NotSerialized) { Return (_PRS) } > + Method(_SRS, 1, NotSerialized) { } > + } > } > > #include "acpi-dsdt-cpu-hotplug.dsl" >