[syslinux] Enumeration of ISA serial ports inconsistent between Linux and Syslinux
Oliver Mangold
o.mangold at gmail.com
Sun Oct 9 04:25:37 PDT 2016
Hi,
I would like to point out an issue with the enumeration of ISA serial
devices in Syslinux. If I interpret the snippet below correctly,
Syslinux looks up the device order with the BIOS, while Linux uses the
fixed order 3F8,2F8,3E8,2E8.
Note that this inconsistency is a real problem, as some motherboards
(like e.g. a Supermicro X10DRi with default BIOS settings) have a
different order stored in BIOS:
---
# hexdump -s 0x400 -n 8 /dev/mem
0000400 02f8 03f8 0000 0000
---
Best regards,
Oliver
--- /syslinux/core/include/bios.h ---
#define SERIAL_BASE 0x0400 /* Base address for 4 serial ports */
...
static inline uint16_t get_serial_port(uint16_t port)
{
/* Magic array in BIOS memory, contains four entries */
const uint16_t * const serial_ports = (const uint16_t *)SERIAL_BASE;
/*
* If port > 3 then the port is simply the I/O base address
*/
if (port > 3)
return port;
/* Get the I/O port from the BIOS */
return serial_ports[port];
}
---
More information about the Syslinux
mailing list