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 269891 Details for
Bug 396701
PCI domains support is needed for some machines to boot
[?]
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]
patch for F8
pci-domains-f8.patch (text/plain), 7.09 KB, created by
Michal Schmidt
on 2007-11-27 16:39:02 UTC
(
hide
)
Description:
patch for F8
Filename:
MIME Type:
Creator:
Michal Schmidt
Created:
2007-11-27 16:39:02 UTC
Size:
7.09 KB
patch
obsolete
>diff -Nurp linux-2.6.23.i686.orig/arch/i386/Kconfig linux-2.6.23.i686/arch/i386/Kconfig >--- linux-2.6.23.i686.orig/arch/i386/Kconfig 2007-11-27 17:13:18.000000000 +0100 >+++ linux-2.6.23.i686/arch/i386/Kconfig 2007-11-27 17:14:39.000000000 +0100 >@@ -1149,6 +1149,11 @@ config PCI_MMCONFIG_OFF_BY_DEFAULT > mmconf PCI accesses if booted with pci=mmconf > Distribution kernels will likely need this option. > >+config PCI_DOMAINS >+ bool >+ depends on PCI >+ default y >+ > source "drivers/pci/pcie/Kconfig" > > source "drivers/pci/Kconfig" >diff -Nurp linux-2.6.23.i686.orig/arch/i386/pci/acpi.c linux-2.6.23.i686/arch/i386/pci/acpi.c >--- linux-2.6.23.i686.orig/arch/i386/pci/acpi.c 2007-10-09 22:31:38.000000000 +0200 >+++ linux-2.6.23.i686/arch/i386/pci/acpi.c 2007-11-27 17:14:39.000000000 +0100 >@@ -11,6 +11,12 @@ struct pci_bus * __devinit pci_acpi_scan > struct pci_sysdata *sd; > int pxm; > >+ if (domain && !pci_domains_supported) { >+ printk(KERN_WARNING "PCI: Multiple domains not supported " >+ "(dom %d, bus %d)\n", domain, busnum); >+ return NULL; >+ } >+ > /* Allocate per-root-bus (not per bus) arch-specific data. > * TODO: leak; this memory is never freed. > * It's arguable whether it's worth the trouble to care. >@@ -21,12 +27,7 @@ struct pci_bus * __devinit pci_acpi_scan > return NULL; > } > >- if (domain != 0) { >- printk(KERN_WARNING "PCI: Multiple domains not supported\n"); >- kfree(sd); >- return NULL; >- } >- >+ sd->domain = domain; > sd->node = -1; > > pxm = acpi_get_pxm(device->handle); >diff -Nurp linux-2.6.23.i686.orig/arch/i386/pci/common.c linux-2.6.23.i686/arch/i386/pci/common.c >--- linux-2.6.23.i686.orig/arch/i386/pci/common.c 2007-11-27 17:13:18.000000000 +0100 >+++ linux-2.6.23.i686/arch/i386/pci/common.c 2007-11-27 17:14:39.000000000 +0100 >@@ -29,12 +29,14 @@ struct pci_raw_ops *raw_pci_ops; > > static int pci_read(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *value) > { >- return raw_pci_ops->read(0, bus->number, devfn, where, size, value); >+ return raw_pci_ops->read(pci_domain_nr(bus), bus->number, >+ devfn, where, size, value); > } > > static int pci_write(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 value) > { >- return raw_pci_ops->write(0, bus->number, devfn, where, size, value); >+ return raw_pci_ops->write(pci_domain_nr(bus), bus->number, >+ devfn, where, size, value); > } > > struct pci_ops pci_root_ops = { >diff -Nurp linux-2.6.23.i686.orig/arch/x86_64/Kconfig linux-2.6.23.i686/arch/x86_64/Kconfig >--- linux-2.6.23.i686.orig/arch/x86_64/Kconfig 2007-11-27 17:13:18.000000000 +0100 >+++ linux-2.6.23.i686/arch/x86_64/Kconfig 2007-11-27 17:14:39.000000000 +0100 >@@ -754,6 +754,11 @@ config PCI_MMCONFIG_OFF_BY_DEFAULT > mmconf PCI accesses if booted with pci=mmconf > Distribution kernels will likely need this option. > >+config PCI_DOMAINS >+ bool >+ depends on PCI >+ default y >+ > source "drivers/pci/pcie/Kconfig" > > source "drivers/pci/Kconfig" >diff -Nurp linux-2.6.23.i686.orig/Documentation/kernel-parameters.txt linux-2.6.23.i686/Documentation/kernel-parameters.txt >--- linux-2.6.23.i686.orig/Documentation/kernel-parameters.txt 2007-11-27 17:13:19.000000000 +0100 >+++ linux-2.6.23.i686/Documentation/kernel-parameters.txt 2007-11-27 17:16:35.000000000 +0100 >@@ -1273,6 +1273,8 @@ and is between 256 and 4096 characters. > Mechanism 1. > conf2 [X86-32] Force use of PCI Configuration > Mechanism 2. >+ nodomains [PCI] Disable support for multiple PCI >+ root domains (aka PCI segments, in ACPI-speak). > mmconf [IA-32,X86_64] Enable use of MMCONFIG for PCI > Configuration > nommconf [X86-32,X86_64] Disable use of MMCONFIG for PCI >diff -Nurp linux-2.6.23.i686.orig/drivers/pci/pci.c linux-2.6.23.i686/drivers/pci/pci.c >--- linux-2.6.23.i686.orig/drivers/pci/pci.c 2007-11-27 17:13:18.000000000 +0100 >+++ linux-2.6.23.i686/drivers/pci/pci.c 2007-11-27 17:14:39.000000000 +0100 >@@ -22,6 +22,10 @@ > > unsigned int pci_pm_d3_delay = 10; > >+#ifdef CONFIG_PCI_DOMAINS >+int pci_domains_supported = 1; >+#endif >+ > #define DEFAULT_CARDBUS_IO_SIZE (256) > #define DEFAULT_CARDBUS_MEM_SIZE (64*1024*1024) > /* pci=cbmemsize=nnM,cbiosize=nn can override this */ >@@ -1561,6 +1565,13 @@ int pci_select_bars(struct pci_dev *dev, > return bars; > } > >+static void __devinit pci_no_domains(void) >+{ >+#ifdef CONFIG_PCI_DOMAINS >+ pci_domains_supported = 0; >+#endif >+} >+ > static int __devinit pci_init(void) > { > struct pci_dev *dev = NULL; >@@ -1580,6 +1591,8 @@ static int __devinit pci_setup(char *str > if (*str && (str = pcibios_setup(str)) && *str) { > if (!strcmp(str, "nomsi")) { > pci_no_msi(); >+ } else if (!strcmp(str, "nodomains")) { >+ pci_no_domains(); > } else if (!strncmp(str, "cbiosize=", 9)) { > pci_cardbus_io_size = memparse(str + 9, &str); > } else if (!strncmp(str, "cbmemsize=", 10)) { >diff -Nurp linux-2.6.23.i686.orig/include/asm-i386/pci.h linux-2.6.23.i686/include/asm-i386/pci.h >--- linux-2.6.23.i686.orig/include/asm-i386/pci.h 2007-10-09 22:31:38.000000000 +0200 >+++ linux-2.6.23.i686/include/asm-i386/pci.h 2007-11-27 17:14:39.000000000 +0100 >@@ -5,12 +5,24 @@ > #ifdef __KERNEL__ > > struct pci_sysdata { >+ int domain; /* PCI domain */ > int node; /* NUMA node */ > }; > > /* scan a bus after allocating a pci_sysdata for it */ > extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); > >+static inline int pci_domain_nr(struct pci_bus *bus) >+{ >+ struct pci_sysdata *sd = bus->sysdata; >+ return sd->domain; >+} >+ >+static inline int pci_proc_domain(struct pci_bus *bus) >+{ >+ return pci_domain_nr(bus); >+} >+ > #include <linux/mm.h> /* for struct page */ > > /* Can be used to override the logic in pci_scan_bus for skipping >diff -Nurp linux-2.6.23.i686.orig/include/asm-x86_64/pci.h linux-2.6.23.i686/include/asm-x86_64/pci.h >--- linux-2.6.23.i686.orig/include/asm-x86_64/pci.h 2007-10-09 22:31:38.000000000 +0200 >+++ linux-2.6.23.i686/include/asm-x86_64/pci.h 2007-11-27 17:14:39.000000000 +0100 >@@ -6,12 +6,24 @@ > #ifdef __KERNEL__ > > struct pci_sysdata { >+ int domain; /* PCI domain */ > int node; /* NUMA node */ > void* iommu; /* IOMMU private data */ > }; > > extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); > >+static inline int pci_domain_nr(struct pci_bus *bus) >+{ >+ struct pci_sysdata *sd = bus->sysdata; >+ return sd->domain; >+} >+ >+static inline int pci_proc_domain(struct pci_bus *bus) >+{ >+ return pci_domain_nr(bus); >+} >+ > #ifdef CONFIG_CALGARY_IOMMU > static inline void* pci_iommu(struct pci_bus *bus) > { >diff -Nurp linux-2.6.23.i686.orig/include/linux/pci.h linux-2.6.23.i686/include/linux/pci.h >--- linux-2.6.23.i686.orig/include/linux/pci.h 2007-10-09 22:31:38.000000000 +0200 >+++ linux-2.6.23.i686/include/linux/pci.h 2007-11-27 17:14:39.000000000 +0100 >@@ -685,13 +685,16 @@ extern void pci_unblock_user_cfg_access( > * a PCI domain is defined to be a set of PCI busses which share > * configuration space. > */ >-#ifndef CONFIG_PCI_DOMAINS >+#ifdef CONFIG_PCI_DOMAINS >+extern int pci_domains_supported; >+#else >+enum { pci_domains_supported = 0 }; > static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } > static inline int pci_proc_domain(struct pci_bus *bus) > { > return 0; > } >-#endif >+#endif /* CONFIG_PCI_DOMAINS */ > > #else /* CONFIG_PCI is not enabled */ >
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 396701
:
269781
| 269891