<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Kernel Parameters on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/kernel-parameters/</link>
        <description>Recent content in Kernel Parameters on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sun, 24 May 2026 00:41:23 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/kernel-parameters/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>pci=nomsi and pcie_aspm=off explained: troubleshooting SATA expansion cards not detected, dropping disks, or freezing on Linux</title>
        <link>https://knightli.com/en/2026/05/24/pci-nomsi-pcie-aspm-off-linux-sata-expansion-card/</link>
        <pubDate>Sun, 24 May 2026 00:41:23 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/24/pci-nomsi-pcie-aspm-off-linux-sata-expansion-card/</guid>
        <description>&lt;p&gt;When using PCIe SATA expansion cards on Linux or Ubuntu, users often run into disks not being detected, disks dropping after some runtime, system freezes, or boot problems around PCIe link training. Common examples include JMB585 and ASM1166 SATA cards, especially in NAS boxes, mini PCs, industrial PCs, modified motherboards, or cheap adapter setups.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; and &lt;code&gt;pcie_aspm=off&lt;/code&gt; are two Linux kernel parameters often used when troubleshooting this class of problem. They both involve PCIe, but they address different layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; mainly targets &lt;strong&gt;interrupt signaling problems&lt;/strong&gt;, meaning the way the device notifies the CPU is unreliable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt; mainly targets &lt;strong&gt;PCIe power management problems&lt;/strong&gt;, meaning the link fails to wake reliably after entering a low-power state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you treat these two options as the same kind of fix, troubleshooting becomes guesswork. A better approach is to look at the symptoms and decide whether interrupts, link power management, or the hardware itself is the more likely suspect.&lt;/p&gt;
&lt;h2 id=&#34;pcinomsi-disable-message-signaled-interrupts&#34;&gt;pci=nomsi: disable message-signaled interrupts
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; can be read as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PCI&lt;/code&gt;: PCI-related devices.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no&lt;/code&gt;: disable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MSI&lt;/code&gt;: Message Signaled Interrupts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It tells the Linux kernel not to use MSI / MSI-X interrupt mechanisms for PCI devices, and to fall back to the older INTx interrupt mode.&lt;/p&gt;
&lt;h2 id=&#34;what-is-msi&#34;&gt;What is MSI?
&lt;/h2&gt;&lt;p&gt;Traditionally, hardware devices notify the CPU through physical interrupt pins, known as legacy IRQs. This works, but sharing and scaling are limited.&lt;/p&gt;
&lt;p&gt;MSI / MSI-X came later. Instead of pulling a physical interrupt pin, the device writes a message to a specific memory address. When the CPU receives that message, it knows which device raised the interrupt. On modern systems, MSI / MSI-X is usually more flexible and better suited for high-concurrency devices.&lt;/p&gt;
&lt;p&gt;The problem is that not every PCIe expansion card implements MSI reliably. Some cheap cards, retired enterprise cards, bridge-chip designs, or SATA controllers with poor firmware may produce abnormal MSI messages, lost interrupts, or interrupt storms under Linux drivers.&lt;/p&gt;
&lt;p&gt;Common symptoms include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The machine hangs while detecting the PCIe expansion card during boot.&lt;/li&gt;
&lt;li&gt;The SATA expansion card does not detect disks at all.&lt;/li&gt;
&lt;li&gt;Random system freezes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dmesg&lt;/code&gt; shows errors such as &lt;code&gt;irq xx: nobody cared&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The card appears to work under Windows but is unstable under Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The core problem is not the hard disk or filesystem. It is the interrupt communication path between the device and CPU.&lt;/p&gt;
&lt;h2 id=&#34;what-happens-after-adding-pcinomsi&#34;&gt;What happens after adding pci=nomsi?
&lt;/h2&gt;&lt;p&gt;Enable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pci=nomsi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This tells the Linux kernel not to let PCI devices use advanced MSI message interrupts, and to fall back to legacy INTx interrupts.&lt;/p&gt;
&lt;p&gt;This may slightly reduce performance and interrupt handling efficiency, especially on high-throughput or high-interrupt devices. For home NAS setups, SATA expansion cards, and ordinary hard-drive arrays, the practical impact is usually small. The value is that it bypasses MSI compatibility bugs in some device firmware or bridge chips, allowing the system to identify the device and handle I/O reliably.&lt;/p&gt;
&lt;p&gt;In short, &lt;code&gt;pci=nomsi&lt;/code&gt; addresses &amp;ldquo;the device&amp;rsquo;s way of notifying the CPU is unreliable.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;pcie_aspmoff-disable-pcie-active-state-power-management&#34;&gt;pcie_aspm=off: disable PCIe Active State Power Management
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt; can be read as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PCIe&lt;/code&gt;: PCI Express.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ASPM&lt;/code&gt;: Active State Power Management.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;off&lt;/code&gt;: disable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It disables PCIe link power-saving mechanisms, preventing PCIe links from entering low-power states.&lt;/p&gt;
&lt;h2 id=&#34;what-is-aspm&#34;&gt;What is ASPM?
&lt;/h2&gt;&lt;p&gt;ASPM is a PCIe power-saving mechanism. When the system sees that a PCIe link is idle, it can move the link into a lower-power state such as L0s or L1. When the device needs to transfer data again, the link wakes back up to normal operation.&lt;/p&gt;
&lt;p&gt;On well-designed hardware, this saves power and is almost invisible to users. On some consumer motherboards, mini PCs, industrial systems, cheap SATA cards, adapters, or systems with weaker signal quality, the problem is &amp;ldquo;it goes to sleep and does not wake cleanly.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;A typical case is a JMB585 or ASM1166 PCIe SATA card entering a low-power state after being idle. The next disk access requires the link to wake from L1. If the controller, motherboard, riser, power, or firmware quality is not good enough, wake-up may be too slow or the physical signal may glitch. The Linux kernel may then think the device briefly disappeared.&lt;/p&gt;
&lt;p&gt;Typical &lt;code&gt;dmesg&lt;/code&gt; messages include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Physical Layer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ata1: link is slow to respond, please be patient
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ata1: COMRESET failed (errno=-16)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This may be followed by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disk dropout.&lt;/li&gt;
&lt;li&gt;Degraded arrays.&lt;/li&gt;
&lt;li&gt;Filesystem remounted read-only.&lt;/li&gt;
&lt;li&gt;NAS services failing.&lt;/li&gt;
&lt;li&gt;System I/O hangs.&lt;/li&gt;
&lt;li&gt;Disk temporarily returns after reboot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The frustrating part is that the problem may not appear at boot. It often happens after the system has been running, after an idle period, or during a load transition.&lt;/p&gt;
&lt;h2 id=&#34;what-happens-after-adding-pcie_aspmoff&#34;&gt;What happens after adding pcie_aspm=off?
&lt;/h2&gt;&lt;p&gt;Enable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pcie_aspm=off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This tells the kernel to disable system-wide PCIe ASPM. PCIe links should remain in normal connected states as much as possible, whether idle or busy, instead of entering low-power sleep.&lt;/p&gt;
&lt;p&gt;The side effect is slightly higher power use. For desktops, NAS boxes, and mini PCs, this is often only hundreds of milliwatts to one or two watts. For laptops, it may affect battery life. The benefit is fewer disk drops, link-training errors, and physical-layer errors caused by PCIe link sleep and wake.&lt;/p&gt;
&lt;p&gt;In short, &lt;code&gt;pcie_aspm=off&lt;/code&gt; addresses &amp;ldquo;the PCIe link does not wake reliably after sleeping.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;the-difference-between-the-two-parameters&#34;&gt;The difference between the two parameters
&lt;/h2&gt;&lt;p&gt;They solve two different classes of problems:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Parameter&lt;/th&gt;
          &lt;th&gt;Core problem&lt;/th&gt;
          &lt;th&gt;Common symptoms&lt;/th&gt;
          &lt;th&gt;Main side effect&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pci=nomsi&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Interrupt signaling conflicts, poor MSI / MSI-X compatibility&lt;/td&gt;
          &lt;td&gt;Boot hangs, no disk detection, &lt;code&gt;irq xx: nobody cared&lt;/code&gt;, system freeze&lt;/td&gt;
          &lt;td&gt;Slightly lower interrupt efficiency under very high concurrency&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;PCIe power-save wake failure, unstable link signal&lt;/td&gt;
          &lt;td&gt;Works at boot, drops disks later, &lt;code&gt;PCIe Bus Error&lt;/code&gt;, &lt;code&gt;COMRESET failed&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Slightly higher power use, slightly lower laptop battery life&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;They do not replace each other. One controls interrupts, the other controls link power management.&lt;/p&gt;
&lt;p&gt;If the system hangs during boot or the device is never detected, suspect &lt;code&gt;pci=nomsi&lt;/code&gt; first. If it boots normally but drops disks later, or &lt;code&gt;dmesg&lt;/code&gt; shows Physical Layer, COMRESET, or &amp;ldquo;link is slow to respond&amp;rdquo; messages, suspect &lt;code&gt;pcie_aspm=off&lt;/code&gt; first.&lt;/p&gt;
&lt;h2 id=&#34;should-you-add-both&#34;&gt;Should you add both?
&lt;/h2&gt;&lt;p&gt;Many NAS users add both at once:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pci=nomsi pcie_aspm=off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is a quick troubleshooting method, especially with JMB585, ASM1166, mini PCs, adapter cards, uncertain power, and uncertain cabling. It can bypass MSI compatibility issues and ASPM wake problems at the same time.&lt;/p&gt;
&lt;p&gt;From a troubleshooting perspective, it is better to record symptoms and logs first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you see interrupt errors or boot hangs, try &lt;code&gt;pci=nomsi&lt;/code&gt; first.&lt;/li&gt;
&lt;li&gt;If you see disk drops, PCIe Bus Error, or COMRESET after runtime, try &lt;code&gt;pcie_aspm=off&lt;/code&gt; first.&lt;/li&gt;
&lt;li&gt;If the system is unstable and you need to restore service quickly, add both, then test them separately later.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This helps you identify the actual class of problem, which is useful when changing cards, slots, motherboards, or BIOS settings later.&lt;/p&gt;
&lt;h2 id=&#34;how-to-make-it-permanent-on-ubuntu--debian&#34;&gt;How to make it permanent on Ubuntu / Debian
&lt;/h2&gt;&lt;p&gt;Edit the Grub configuration file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Find this line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet splash&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Append the parameters inside the quotes, separated by spaces. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet splash pci=nomsi pcie_aspm=off&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Save and exit. In Nano, press &lt;code&gt;Ctrl+O&lt;/code&gt;, confirm with Enter, then press &lt;code&gt;Ctrl+X&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Update Grub and reboot:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-grub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After reboot, check whether the kernel command line is active:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/cmdline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If the output contains &lt;code&gt;pci=nomsi&lt;/code&gt; and &lt;code&gt;pcie_aspm=off&lt;/code&gt;, the parameters are active for the current boot.&lt;/p&gt;
&lt;h2 id=&#34;what-else-should-you-check&#34;&gt;What else should you check?
&lt;/h2&gt;&lt;p&gt;These two parameters are useful, but they are not universal fixes for every disk-drop problem. When troubleshooting SATA expansion cards and NAS disk drops, also check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loose or poor-quality SATA data cables.&lt;/li&gt;
&lt;li&gt;Stable disk power, especially when many disks spin up at once.&lt;/li&gt;
&lt;li&gt;Poor PCIe slot contact.&lt;/li&gt;
&lt;li&gt;Expansion card overheating.&lt;/li&gt;
&lt;li&gt;BIOS options related to PCIe ASPM, Above 4G Decoding, and PCIe speed.&lt;/li&gt;
&lt;li&gt;Known firmware issues in the SATA expansion card.&lt;/li&gt;
&lt;li&gt;Disk SMART warnings, bad sectors, or I/O errors in system logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If disk SMART is already reporting errors, or power delivery is unstable, kernel parameters alone will not solve the underlying problem.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; and &lt;code&gt;pcie_aspm=off&lt;/code&gt; are both common troubleshooting parameters for unstable PCIe SATA expansion cards on Linux, but they work at different layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pci=nomsi&lt;/code&gt;: disables MSI / MSI-X to bypass interrupt compatibility issues.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt;: disables PCIe ASPM to avoid wake failures after link power saving.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For JMB585, ASM1166, NAS systems, mini PCs, and cheap PCIe cards, these two parameters often help. The safer approach is to inspect &lt;code&gt;dmesg&lt;/code&gt;, decide whether the problem looks like interrupts or link power management, then choose one or both.&lt;/p&gt;
&lt;p&gt;They are troubleshooting tools, not a replacement for good hardware. If the system becomes stable after adding them, the problem is likely in interrupt compatibility or PCIe power management. If disks still drop, continue checking power, cables, cooling, disk health, and the expansion card itself.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
