Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 297065 Details for
Bug 280641
[PATCH] Failure to recognize 5th SATA drive due to PCI: Unable to reserve mem region
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
current proposed PNP system quirk
pnp-system-quirk (text/plain), 5.96 KB, created by
Bjorn Helgaas
on 2008-03-06 16:13:03 UTC
(
hide
)
Description:
current proposed PNP system quirk
Filename:
MIME Type:
Creator:
Bjorn Helgaas
Created:
2008-03-06 16:13:03 UTC
Size:
5.96 KB
patch
obsolete
>PNP: revert Supermicro H8DCE motherboard quirk > >There are other systems with similar problems >(http://lkml.org/lkml/2008/1/27/168), so we need a more >generic quirk. Remove the Supermicro-specific one first. > >Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> > >Index: work7/drivers/pnp/quirks.c >=================================================================== >--- work7.orig/drivers/pnp/quirks.c 2008-02-27 10:17:19.000000000 -0700 >+++ work7/drivers/pnp/quirks.c 2008-02-27 10:17:40.000000000 -0700 >@@ -17,7 +17,6 @@ > #include <linux/slab.h> > #include <linux/pnp.h> > #include <linux/io.h> >-#include <linux/dmi.h> > #include <linux/kallsyms.h> > #include "base.h" > >@@ -109,46 +108,6 @@ > "pnp: SB audio device quirk - increasing port range\n"); > } > >-static void quirk_supermicro_h8dce_system(struct pnp_dev *dev) >-{ >- int i; >- static struct dmi_system_id supermicro_h8dce[] = { >- { >- .ident = "Supermicro H8DCE", >- .matches = { >- DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), >- DMI_MATCH(DMI_PRODUCT_NAME, "H8DCE"), >- }, >- }, >- { } >- }; >- >- if (!dmi_check_system(supermicro_h8dce)) >- return; >- >- /* >- * On the Supermicro H8DCE, there's a system device with resources >- * that overlap BAR 6 of the built-in SATA PCI adapter. If the PNP >- * system device claims them, the sata_nv driver won't be able to. >- * More details at: >- * https://bugzilla.redhat.com/show_bug.cgi?id=280641 >- * https://bugzilla.redhat.com/show_bug.cgi?id=313491 >- * http://lkml.org/lkml/2008/1/9/449 >- * http://thread.gmane.org/gmane.linux.acpi.devel/27312 >- */ >- for (i = 0; i < PNP_MAX_MEM; i++) { >- if (pnp_mem_valid(dev, i) && pnp_mem_len(dev, i) && >- (pnp_mem_start(dev, i) & 0xdfef0000) == 0xdfef0000) { >- dev_warn(&dev->dev, "disabling 0x%llx-0x%llx to prevent" >- " conflict with sata_nv PCI device\n", >- (unsigned long long) pnp_mem_start(dev, i), >- (unsigned long long) (pnp_mem_start(dev, i) + >- pnp_mem_len(dev, i) - 1)); >- pnp_mem_flags(dev, i) = 0; >- } >- } >-} >- > /* > * PnP Quirks > * Cards or devices that need some tweaking due to incomplete resource info >@@ -169,8 +128,6 @@ > {"CTL0043", quirk_sb16audio_resources}, > {"CTL0044", quirk_sb16audio_resources}, > {"CTL0045", quirk_sb16audio_resources}, >- {"PNP0c01", quirk_supermicro_h8dce_system}, >- {"PNP0c02", quirk_supermicro_h8dce_system}, > {""} > }; > >PNP: disable PNP motherboard resources that overlap PCI BARs > >Some BIOSes have PNP motherboard devices with resources that >partially overlap PCI BARs. The PNP system driver claims these >motherboard resources, which prevents the normal PCI driver from >requesting them later. > >This patch disables the PNP resources that conflict with PCI BARs >so they won't be claimed by the PNP system driver. > >Of course, this only works if PCI devices have already been enumerated. >Currently, PCI devices are discovered before any PNP init via this path: > > acpi_pci_root_init() -> acpi_pci_root_add() -> pci_acpi_scan_root() -> > pci_scan_bus_parented() -> pci_scan_child_bus() -> ... > >References: > https://bugzilla.redhat.com/show_bug.cgi?id=280641 > https://bugzilla.redhat.com/show_bug.cgi?id=313491 > http://lkml.org/lkml/2008/1/9/449 > http://thread.gmane.org/gmane.linux.acpi.devel/27312 > http://lkml.org/lkml/2008/1/27/168 > >Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> > >Index: work7/drivers/pnp/quirks.c >=================================================================== >--- work7.orig/drivers/pnp/quirks.c 2008-02-27 10:17:40.000000000 -0700 >+++ work7/drivers/pnp/quirks.c 2008-02-27 10:19:35.000000000 -0700 >@@ -108,6 +108,77 @@ > "pnp: SB audio device quirk - increasing port range\n"); > } > >+ >+#include <linux/pci.h> >+ >+static void quirk_system_pci_resources(struct pnp_dev *dev) >+{ >+ struct pci_dev *pdev = NULL; >+ resource_size_t pnp_start, pnp_end, pci_start, pci_end; >+ int i, j; >+ >+ /* >+ * Some BIOSes have PNP motherboard devices with resources that >+ * partially overlap PCI BARs. The PNP system driver claims these >+ * motherboard resources, which prevents the normal PCI driver from >+ * requesting them later. >+ * >+ * This patch disables the PNP resources that conflict with PCI BARs >+ * so they won't be claimed by the PNP system driver. >+ */ >+ for_each_pci_dev(pdev) { >+ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { >+ if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM) || >+ pci_resource_len(pdev, i) == 0) >+ continue; >+ >+ pci_start = pci_resource_start(pdev, i); >+ pci_end = pci_resource_end(pdev, i); >+ for (j = 0; j < PNP_MAX_MEM; j++) { >+ if (!pnp_mem_valid(dev, j) || >+ pnp_mem_len(dev, j) == 0) >+ continue; >+ >+ pnp_start = pnp_mem_start(dev, j); >+ pnp_end = pnp_mem_end(dev, j); >+ >+ /* >+ * If the PNP region doesn't overlap the PCI >+ * region at all, there's no problem. >+ */ >+ if (pnp_end < pci_start || pnp_start > pci_end) >+ continue; >+ >+ /* >+ * If the PNP region completely encloses (or is >+ * at least as large as) the PCI region, that's >+ * also OK. For example, this happens when the >+ * PNP device describes a bridge with PCI >+ * behind it. >+ */ >+ if (pnp_start <= pci_start && >+ pnp_end >= pci_end) >+ continue; >+ >+ /* >+ * Otherwise, the PNP region overlaps *part* of >+ * the PCI region, and that might prevent a PCI >+ * driver from requesting its resources. >+ */ >+ dev_warn(&dev->dev, "mem resource " >+ "(0x%llx-0x%llx) overlaps %s BAR %d " >+ "(0x%llx-0x%llx), disabling\n", >+ (unsigned long long) pnp_start, >+ (unsigned long long) pnp_end, >+ pci_name(pdev), i, >+ (unsigned long long) pci_start, >+ (unsigned long long) pci_end); >+ pnp_mem_flags(dev, j) = 0; >+ } >+ } >+ } >+} >+ > /* > * PnP Quirks > * Cards or devices that need some tweaking due to incomplete resource info >@@ -128,6 +199,8 @@ > {"CTL0043", quirk_sb16audio_resources}, > {"CTL0044", quirk_sb16audio_resources}, > {"CTL0045", quirk_sb16audio_resources}, >+ {"PNP0c01", quirk_system_pci_resources}, >+ {"PNP0c02", quirk_system_pci_resources}, > {""} > }; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 280641
:
188831
|
189881
|
189891
|
189901
|
192761
|
192771
|
192931
|
194851
|
291534
| 297065 |
306040