[syslinux] Enumeration of ISA serial ports inconsistent between Linux and Syslinux

Oliver Mangold o.mangold at gmail.com
Sun Oct 9 07:04:40 PDT 2016


On 09.10.2016 14:49, Gene Cumm wrote:
> Excellent job digging up the differences.  Looks like the code comes
> from commit ID c4fa331 but is much older.  The code comes from 7916325
> which is derived from the ASM in beaaa4f.  It appears to me that it
> was used to check the presence of a serial port and it was assumed the
> order at that memory address would be consistent and either the proper
> value or 0.
>
> I'm trying to dig for some documentation like Ralph Brown's Interrupt
> list.  Have you checked for firmware updates?  Have you tried
> experimenting with redoing what serial port is assigned what IO base
> address to make it consistent between Syslinux and Linux?
>
> Alternatively, have you considered specifying the full IO address
> instead of the low number (like "0x3F8")?
>
>
Hi,

actually I didn't do much with Syslinux myself. I found the issue with 
Grub2 first, and after I brief exchange about it on the Linux-Serial 
mailing list I decided to look up how Syslinux handles this, and found 
it has the same problem as Grub2. So I decided to do a good deed and 
report it to you, too :) As I understand the Supermicro BIOS, the issue 
could be fixed in the BIOS settings, by manually changing the ports to 
the default (Linux) order. Nonetheless the vendor default seems to be 
COM0=2f8, COM1=3f8. I don't have enough different boards to play with to 
give you an accurate answer on which SM boards/firmware revisions are 
affected, but it isn't the first time I have seen something like this.

> RBIL MEMORY.LST release 61 starting at line 31:
>
> --------S-M00400000--------------------------
> MEM 0040h:0000h - BASE I/O ADDRESS OF FIRST SERIAL I/O PORT
> Size:    WORD
> Notes:    the BIOS sets this word to zero if is unable to find any serial ports
>        at the addresses it is programmed to check at boot
>      DOS and BIOS serial device numbers may be redefined by re-assigning
>        these values of the base I/O addresses stored here
>
>
>
> So the behavior of Syslinux makes sense since the sequence numbers can
> be re-assigned by the firmware (in this case, the CSM of the EFI
> firmware) by moving the values around.
I'm quite aware of this, and I would even tend to agree with you that 
this behavior makes sense. Unfortunately it seems, though, that both 
Linux and OpenBSD use the traditional static ordering without looking at 
the BIOS info, and at least for Linux I get the impression that it is 
quite unlikely that this will change anytime soon. Here is the thread I 
started on Linux-Serial, in case you want to read Greg's answer for 
yourself:

http://www.spinics.net/lists/linux-serial/msg23997.html

I don't want to stir up any complicated discussion about who is right 
and who is wrong, but as a user I would prefer the behavior to be 
consistent between all OSes and bootloaders.

Best regards,

Oliver


More information about the Syslinux mailing list