What does "pci=noaer" or "pci=nomsi" mean?

I had problems installing Ubuntu on my HP Laptop. It used to give some error related to peace bus.

I didn't understand the error, but after visiting many websites I found a solution.

The solution asked me to add a parameter "pci=nomsi" to the kernel, while boot up.

And later make it permanent by updating "/etc/default/grub".

I tried this solution and it worked fine.

But I would like to know, what is a pci bus and what did that command mean?


Solution 1:

Linux kernel is compiled with certain parameters - in simple words special "settings" related to hardware and kernel's behavior. And those settings can be considered default. When you add such setting in /etc/default/grub they modify the default settings of the kernel.

According to the documentation:

nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide.

and

noaer [PCIE] If the PCIEAER kernel config parameter is enabled, this kernel boot option can be used to disable the use of PCIE advanced error reporting.

In short nomsi disables MSI ( special way of signalling interrupts from hardware to kernel, if I'm not mistaken ) and noaer disables advanced error reporting. I doubt that advanced error reporting could cause booting problem. My guess is that there is some hardware that doesn't implement MSI well or kernel cannot communicate with that hardware using MSI, however that's just a guess.