PCI: Handle case when no pci device can provide cache line size hint
authorCsaba Henk <csaba@gluster.com>
Tue, 15 Dec 2009 12:25:25 +0000 (17:55 +0530)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 16 Dec 2009 21:37:50 +0000 (13:37 -0800)
Prior to this patch, if pci_read_config_byte(dev, PCI_CACHE_LINE_SIZE, ...)
returns 0 for all dev, pci_cache_line_size ends up set to zero
(instead of pci_dfl_cache_line_size).

This patch ensures the pci_cache_line_size = pci_dfl_cache_line_size
setting in the above scenario.

This happens in case of a kvm-88 guest (where, consequently, the rtl8139
NIC failed to initialize).

Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Csaba Henk <csaba@gluster.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/quirks.c

index 7cfa7c38d31869bd482138fa2fc3fcba06d561e7..f70f4e23225c5db77f930abb94237047b018245e 100644 (file)
@@ -2629,7 +2629,7 @@ static int __init pci_apply_final_quirks(void)
        if (!pci_cache_line_size) {
                printk(KERN_DEBUG "PCI: CLS %u bytes, default %u\n",
                       cls << 2, pci_dfl_cache_line_size << 2);
-               pci_cache_line_size = cls;
+               pci_cache_line_size = cls ? cls : pci_dfl_cache_line_size;
        }
 
        return 0;