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.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.