trouble setting IRQs for COM ports

FreeBSD 15.0-RELEASE
Supermicro E101-60
Nuvoton NCT6106D Super IO (LPC Bus)

My BIOS supposedly lets me set the IRQs for the 4 COM ports on my machine - but I can't seem to get it to work:
com1 bios settings.jpg
com2 bios settings.jpg
com3 bios settings.jpg
com4 bios settings.jpg


In /boot/device.hints I have added these lines per 29.2.2 of the Manual and device.hints:

Code:
hint.uart.0.at="isa"
hint.uart.0.port="0x3f8"
hint.uart.0.irq="4"
hint.uart.1.at="isa"
hint.uart.1.port="0x2f8"
hint.uart.1.irq="3"
hint.uart.2.at="isa"
hint.uart.2.port="0x3e8"
hint.uart.2.irq="5"
hint.uart.3.at="isa"
hint.uart.3.port="0x2e8"
hint.uart.3.irq="9"

vmstat -i:
Code:
interrupt                          total       rate
irq3: uart0                         8620         93
irq4: uart1                         8586         93
irq5: uart2 uart3                  15950        173
cpu0:timer                         19154        208
cpu1:timer                         18637        202
cpu2:timer                         17393        188
cpu3:timer                         17740        192
irq129: ahci0                       8129         88
irq131: igb0:rxq0                    295          3
irq132: igb0:rxq1                    475          5
irq133: igb0:aq                        4          0
irq134: hdac0                         17          0
irq135: em0:irq0                     508          6
Total                             115508       1252

dmesg | grep -i uart:
Code:
uart0: <16950 or compatible> port 0x3f8-0x3ff irq 3 on acpi0
uart0: forcing active-hi polarity for IRQ 3
uart1: <16950 or compatible> port 0x2f8-0x2ff irq 4 on acpi0
uart1: forcing active-hi polarity for IRQ 4
uart2: <16950 or compatible> port 0x3e8-0x3ef irq 5 on acpi0
uart2: forcing active-hi polarity for IRQ 5
uart3: <16950 or compatible> port 0x2e8-0x2ef irq 5 on acpi0
uart3: forcing active-hi polarity for IRQ 5


What am I not getting?
 
what's not working, specifically? how are you accessing the serial port? freebsd distinguishes between call-out serial ports and call-in serial ports — /dev/cuau0 should be what your BIOS calls COM0.

we also note via your pics that you have COM0 on IRQ 3 but your boot hints put it on 4, and similar flips on the other UART configs. Double-check those mappings :)
 
The IRQs I set in the hints aren't being assigned to the COM ports

I'm trying to avoid IRQ conflicts and assign
IRQ 4 to COM 1 (uart0)
IRQ 3 to COM 2 (uart1)
IRQ 5 to COM 3 (uart2)
IRQ 9 to COM 4 (uart3)
 
well, the hints you're trying to assign are not the right IRQs according to your BIOS config, so i don't think that'll help. what happens if you remove the hints entirely and adjust the com4 in your BIOS to irq 9? it looks like the system autodetected from your BIOS setup.
 
Removing the hints:

vmstat -i:
Code:
interrupt                          total       rate
irq3: uart0                        12564         82
irq4: uart1                        12468         82
irq5: uart2 uart3                  23362        153
cpu0:timer                         23354        153
cpu1:timer                         21116        138
cpu2:timer                         22558        148
cpu3:timer                         22146        145
irq129: ahci0                       9414         62
irq131: igb0:rxq0                    689          5
irq132: igb0:rxq1                   1491         10
irq133: igb0:aq                        4          0
irq134: hdac0                         13          0
irq135: em0:irq0                     379          2
Total                             149558        979

dmesg | grep -i uart:
Code:
uart0: <16950 or compatible> port 0x3f8-0x3ff irq 3 on acpi0
uart0: forcing active-hi polarity for IRQ 3
uart1: <16950 or compatible> port 0x2f8-0x2ff irq 4 on acpi0
uart1: forcing active-hi polarity for IRQ 4
uart2: <16950 or compatible> port 0x3e8-0x3ef irq 5 on acpi0
uart2: forcing active-hi polarity for IRQ 5
uart3: <16950 or compatible> port 0x2e8-0x2ef irq 5 on acpi0
uart3: forcing active-hi polarity for IRQ 5

Doesn't look like the hints make any difference

I cannot set a specific IRQ in the BIOS, only a range - in this instance 3,4,5,6,7,9,10,11,12
My understanding from Supermicro support is the selection of the IRQ needs to be done in the OS from this range
 
Back
Top