linux-esx always had an issue with IDE probing reporting error message:
"ata_piix 0000:00:07.1: BMDMA: BAR4 is zero, failing back to PIO"
It was caused by initial pci probe optimization which skipped initial
pci_read_bases() for IDE PCI class devices before legacy IDE quirk code.
Restoring it back fixed the problem.
Change-Id: I6e58f224daeb935f9bd59f3256d346611d7ab834
Fixes: #788
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/6257
Tested-by: michellew <michellew@vmware.com>
Reviewed-by: Srinidhi Rao <srinidhir@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
... | ... |
@@ -3,7 +3,24 @@ From: Alexey Makhalov <amakhalov@vmware.com> |
3 | 3 |
Date: Tue, 29 Sep 2015 15:55:49 -0700 |
4 | 4 |
Subject: [PATCH] pci/probe.c: Hardcodded pci probe. |
5 | 5 |
|
6 |
-Added pci=scan_all cmdline parameter to verify hardcodded pci values |
|
6 |
+PCI probing takes a long time to scan resources for all devices |
|
7 |
+on PCI bus. Idea of this patch is to hardcode known resources |
|
8 |
+for known devices. In VMware hypervisor we do not have much |
|
9 |
+virtual PCI devices. |
|
10 |
+ |
|
11 |
+is_known_device() has list of known devices and available |
|
12 |
+resources (BARs) for them. |
|
13 |
+It returns: 0 if BAR not available for the given device |
|
14 |
+ 1 if available and sz parameter will have BAR size |
|
15 |
+ |
|
16 |
+guess_bar_count() returns maximum number of BARs for the given |
|
17 |
+class to do not probe for all 6 bars |
|
18 |
+ |
|
19 |
+has_rom() returns 0 if given class does not have any ROM BARs, |
|
20 |
+which allows to skip ROM probing |
|
21 |
+ |
|
22 |
+Added pci=scan_all cmdline parameter verifies hardcodded pci |
|
23 |
+values at runtime. |
|
7 | 24 |
--- |
8 | 25 |
drivers/pci/pci.c | 2 + |
9 | 26 |
drivers/pci/pci.h | 2 + |
... | ... |
@@ -456,10 +473,10 @@ diff -ur linux-4.19.1/drivers/pci/probe.c linux-4.19.1_new/drivers/pci/probe.c |
456 | 456 |
+ |
457 | 457 |
+ if (pci_scan_and_verify) |
458 | 458 |
+ pci_read_bases(dev, 6, PCI_ROM_ADDRESS); |
459 |
-+ else if (class != PCI_CLASS_STORAGE_IDE) |
|
459 |
++ else |
|
460 | 460 |
+ pci_read_bases(dev, |
461 |
-+ guess_bar_count(dev->class), |
|
462 |
-+ has_rom(dev->class, PCI_ROM_ADDRESS)); |
|
461 |
++ guess_bar_count(dev->class), |
|
462 |
++ has_rom(dev->class, PCI_ROM_ADDRESS)); |
|
463 | 463 |
|
464 | 464 |
pci_subsystem_ids(dev, &dev->subsystem_vendor, &dev->subsystem_device); |
465 | 465 |
|
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
Summary: Kernel |
3 | 3 |
Name: linux-esx |
4 | 4 |
Version: 4.19.1 |
5 |
-Release: 2%{?dist} |
|
5 |
+Release: 3%{?dist} |
|
6 | 6 |
License: GPLv2 |
7 | 7 |
URL: http://www.kernel.org/ |
8 | 8 |
Group: System Environment/Kernel |
... | ... |
@@ -186,6 +186,8 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg |
186 | 186 |
/usr/src/linux-headers-%{uname_r} |
187 | 187 |
|
188 | 188 |
%changelog |
189 |
+* Thu Nov 29 2018 Alexey Makhalov <amakhalov@vmware.com> 4.19.1-3 |
|
190 |
+- Fix BAR4 is zero issue for IDE devices |
|
189 | 191 |
* Thu Nov 15 2018 Ajay Kaher <akaher@vmware.com> 4.19.1-2 |
190 | 192 |
- Adding BuildArch |
191 | 193 |
* Thu Nov 08 2018 Him Kalyan Bordoloi <bordoloih@vmware.com> 4.19.1-1 |