Error i801_smbus: Failed to allocate irq

Hello everyone.

I installed Rocky 8 on old hardware and updated everything.
After reboot I found this kernel trace in the logs.

feb 21 17:33:27 x kernel: i801_smbus 0000:00:1f.3: can't derive routing for PCI INT B
feb 21 17:33:27 x kernel: i801_smbus 0000:00:1f.3: PCI INT B: no GSI
feb 21 17:33:27 x kernel: genirq: Flags mismatch irq 0. 00000080 (i801_smbus) vs. 00015a00 (timer)
feb 21 17:33:27 x kernel: CPU: 0 PID: 614 Comm: systemd-udevd Not tainted 4.18.0-513.11.1.el8_9.0.1.x86_64 #1
feb 21 17:33:27 x kernel: Hardware name: Dell Computer Corporation PowerEdge 860/0XM089, BIOS A05 10/04/2007
feb 21 17:33:27 x kernel: Call Trace:
feb 21 17:33:27 x kernel:  dump_stack+0x41/0x60
feb 21 17:33:27 x kernel:  __setup_irq.cold.55+0x78/0xcf
feb 21 17:33:27 x kernel:  request_threaded_irq+0x109/0x170
feb 21 17:33:27 x kernel:  devm_request_threaded_irq+0x6d/0xd0
feb 21 17:33:27 x kernel:  ? i801_remove+0x80/0x80 [i2c_i801]
feb 21 17:33:27 x kernel:  i801_probe+0x374/0x530 [i2c_i801]
feb 21 17:33:27 x kernel:  ? kfree+0xd3/0x250
feb 21 17:33:27 x kernel:  local_pci_probe+0x42/0x80  
feb 21 17:33:27 x kernel:  pci_device_probe+0x109/0x1c0
feb 21 17:33:27 x kernel:  __driver_probe_device+0x141/0x450
feb 21 17:33:27 x kernel:  driver_probe_device+0x1f/0x90
feb 21 17:33:27 x kernel:  ? __device_attach_driver+0x110/0x110
feb 21 17:33:27 x kernel:  __driver_attach+0x7f/0x170 
feb 21 17:33:27 x kernel:  ? __device_attach_driver+0x110/0x110
feb 21 17:33:27 x kernel:  bus_for_each_dev+0x7b/0xd0 
feb 21 17:33:27 x kernel:  bus_add_driver+0x148/0x200 
feb 21 17:33:27 x kernel:  ? 0xffffffffc0665000
feb 21 17:33:27 x kernel:  driver_register+0x6e/0xc0  
feb 21 17:33:27 x kernel:  ? 0xffffffffc0665000
feb 21 17:33:27 x kernel:  i2c_i801_init+0xb0/0x1000 [i2c_i801]
feb 21 17:33:27 x kernel:  ? 0xffffffffc0665000
feb 21 17:33:27 x kernel:  do_one_initcall+0x46/0x1d0 
feb 21 17:33:27 x kernel:  ? do_init_module+0x22/0x230
feb 21 17:33:27 x kernel:  ? kmem_cache_alloc_trace+0x142/0x280
feb 21 17:33:27 x kernel:  do_init_module+0x5a/0x230  
feb 21 17:33:27 x kernel:  load_module+0x1547/0x1880  
feb 21 17:33:27 x kernel:  ? __do_sys_init_module+0x13b/0x180
feb 21 17:33:27 x kernel:  __do_sys_init_module+0x13b/0x180
feb 21 17:33:27 x kernel:  do_syscall_64+0x5b/0x1b0
feb 21 17:33:27 x kernel:  entry_SYSCALL_64_after_hwframe+0x61/0xc6
feb 21 17:33:27 x kernel: RIP: 0033:0x7f9af1c4a23e
feb 21 17:33:27 x kernel: Code: 48 8b 0d 4d 4c 38 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 1a 4c 38 00 f> 
feb 21 17:33:27 x kernel: RSP: 002b:00007ffcd1c74e38 EFLAGS: 00000246 ORIG_RAX: 00000000000000af 
feb 21 17:33:27 x kernel: RAX: ffffffffffffffda RBX: 00005623031983b0 RCX: 00007f9af1c4a23e
feb 21 17:33:27 x kernel: RDX: 00007f9af287b86d RSI: 000000000000e316 RDI: 00005623039b6b70
feb 21 17:33:27 x kernel: RBP: 00007f9af287b86d R08: 000056230319ea50 R09: 000056230311d01a
feb 21 17:33:27 x kernel: R10: 0000000000000001 R11: 0000000000000246 R12: 00005623039b6b70
feb 21 17:33:27 x kernel: R13: 0000562303189120 R14: 0000000000020000 R15: 0000000000000000
feb 21 17:33:27 x kernel: i801_smbus 0000:00:1f.3: Failed to allocate irq 0: -16
feb 21 17:33:27 x kernel: i801_smbus 0000:00:1f.3: SMBus using polling

It seems unharmful, but I would anyway like to understand if it can be somehow resolved.

Thank you in advance.

Please use the formatting tools available when posting, especially when posting code snippets, logs, etc. I just edited your post so you can see how it’s done. Thx :slight_smile:

1 Like

A PowerEdge 860? You’re not kidding–that model is from 2006!

I think the problem is an issue with the BIOS of the server; it appears not to give a valid ACPI entry/assignment for that IRQ. You could try verifying the server definitely has the last-released BIOS available…

One workaround could be to write a custom module options file (i2c-801.conf) and disable its use of interrupts, that would clear the errors.

Ultimately I really would not put much more time or effort into this really old server; not sure how reliable it would be overall, even with the above workaround – and in any case these things use an egregious amount of electricity in comparison to models only 4-5 years newer.

CPU is too old, would need to be at least a CPU from 2011 or higher. At least for Rocky 9. Rocky 8 should work though at least in theory - I don’t know of any old hardware deprecation in Rocky 8.

I’ve got a PowerEdge 840, but that would be a Pentium IV 2GHz from memory, and I stopped using that a while back mainly because for performance it isn’t up to much. Debian worked good on it though.

Agreed - this CPU definitely is too old for RL9… but this is on a fully-updated RL 8.9 installation, and I’m unable to find any official Red Hat docs specifying anything beyond a 64-bit x86 CPU for RHEL 8… so, in theory, it should work…

I actually found a Red Hat support article addressing this very issue, which includes the steps needed to disable the use of IRQ’s by the i801 kernel driver. Unfortunately, reading this article requires a valid Red Hat account.

I’m actually a huge fan of repurposing older hardware, which often means using linux… but I would argue there’s a practical “lower limit” of performance per watt. Again, all in all, I highly recommend against using hardware this old, even for linux. Unfortunately, I’m just not convinced its performance–and potential stability issues–are worth the cost/trouble at this date.

1 Like

Thank you guys for your answers.
I updated the BIOS and it didn’t help.
Anyway, the server has been on for a month now and so far so good.
I’ll possibly try to get a valid Red Hat account to read the support article and disable the use of IRQ.