Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Aug 2006 20:00:42 GMT
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-i386@FreeBSD.org
Subject:   Re: i386/100831: sio ignores BIOS information about serial ports - bounty offered
Message-ID:  <200608022000.k72K0g8w088458@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/100831; it has been noted by GNATS.

From: Bruce Evans <bde@zeta.org.au>
To: Jo Rhett <jrhett@svcolo.com>
Cc: freebsd-gnats-submit@freebsd.org, freebsd-i386@freebsd.org,
        njl@freebsd.org
Subject: Re: i386/100831: sio ignores BIOS information about serial ports -
 bounty offered
Date: Thu, 3 Aug 2006 05:53:58 +1000 (EST)

 On Thu, 3 Aug 2006, Bruce Evans wrote:
 
 > On Wed, 2 Aug 2006, Jo Rhett wrote:
 >>>> 4. There should be no ill effect from doing this.  Console will never 
 >>>> break
 >>>> and go to the wrong port.
 >>> 
 >>> Yes, "should be".  The wiring should be fairly deterministic once you
 >>> get it to work.  I think it will continue to work even if someone fixes
 >>> (?) ACPI to prefer the hints order to the ACPI order.  However, it would
 >>> break if someone fixes (?) ACPI to prefer the BIOS order to both the hints
 >>> order and the ACPI order (I think ACPI is using its own order and doesn't
 >>> know that you've swapped the order in the BIOS).
 >> 
 >> I'm not sure I understand the difference.  The ACPI order is the order that 
 >> the BIOS presents them in when querying it via ACPI, yes?
 >
 > I don't completely understand this either.  I think there is a non-ACPI part
 > of the BIOS that FreeBSD (or all OS's doesn't see).  As I understand your
 > configuration, you start with COM1 and COM2 at the usual places but don't
 > want to use COM1 so you change the BIOS settings for COM2 to the usual ones
 > for COM1 and maybe vice versa.  This changes soft jumpers or whatever is
 > needed for FreeBSD to see it.  Then you use a BIOS option to swap the ports
 > so that everything is supposed to see COM2 as COM1.  The boot loader sees
 > this but ACPI in FreeBSD doesn't.  I think this changes is only made in
 > some BIOS table that ACPI in FreeBSD doesn't know about.  In my test, I
 > only swapped the settings of COM1 and COM2 in the BIOS, since I couldn't
 > find a BIOS option to swap the unit number assignments, so it was not
 > completely incorrect for ACPI in FreeBSD to swap the settings.
 
 More details on my test:
 - after swapping the settings of COM1 and COM2, both FreeBSD-ACPI and WinXP
     see only the settings swapped.  WinXP didn't report any changes to the
     devices.  I now think this is completely correct.  Swapping like this
     requires swapping in device.hints to keep the same assignment of physical
     devices to unit numbers.
 - after swapping the settings and then disabling COM1, FreeBSD-ACPI moves
     COM2 down to COM1 (sio0) and sio1 goes away, while WinXP doesn't change
     unit numbers and COM1 goes away.  I think the WinXP behaviour is correct
     and FreeBSD-ACPI just allocates unit numbers starting at 0.
 
 Bruce



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