Intel NUC enable IRQ sharing on serial driver

Hello,

I’m on a Intel board, using the Intel NUC image 2.46.0+rev1. I have a 6 serial com ports of which I can only use the first two at the moment. I’d like to be able to use all 6.

I think these dmesg lines are relevant:

[    0.399138] Serial: 8250/16550 driver, 32 ports, IRQ sharing disabled
[    0.420391] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.441677] 00:02: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[    0.462953] 00:03: ttyS2 at I/O 0x3e8 (irq = 7, base_baud = 115200) is a 16550A
[    0.484225] 00:04: ttyS3 at I/O 0x2e8 (irq = 7, base_baud = 115200) is a 16550A
[    0.505501] 00:05: ttyS4 at I/O 0x2f0 (irq = 7, base_baud = 115200) is a 16550A
[    0.526777] 00:06: ttyS5 at I/O 0x2e0 (irq = 7, base_baud = 115200) is a 16550A
[    0.527712] Linux agpgart interface v0.103

I think the problem is that the last 4 COM ports all share IRQ 7 but IRQ sharing is disabled in the serial driver.
I checked in the BIOS, I can’t assign different IRQ’s to the last 4 COM ports.
My question is; How do I enable IRQ sharing on the 8250 serial driver?

Cheers,
Erik

Hi Eric,
At the moment you will need to build your own OS image for the Intel NUC and make the configuration changes yourself. Build instructions can be found at https://www.balena.io/os/docs/custom-build/#Bake-your-own-Image.
The kernel needs to be configured with the CONFIG_SERIAL_8250_EXTENDED and CONFIG_SERIAL_8250_SHARE_IRQ variables. This can be done at https://github.com/balena-os/balena-intel/blob/master/layers/meta-balena-genericx86/recipes-kernel/linux/linux-yocto_%.bbappend. There are some examples of other configurations in that file that can be used as reference.
Let us know how it goes,

Hi again Eric, we have opened an issue to add this to meta-balena (https://github.com/balena-os/meta-balena/issues/1815) please track it for the patch availability.

Hi Alex,

Thank you for the pointers. To be honest it’s a bit more involved than I’d hoped for but I’ll see how far I’ll get.

Cheers,
Erik