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 586713 Details for
Bug 825036
UV2 IO: Need to be able to support more cards with I/O BARs
[?]
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]
Upstream patch adding nobar cmdline argument
nobar.patch (text/plain), 3.72 KB, created by
George Beshers
on 2012-05-24 21:30:53 UTC
(
hide
)
Description:
Upstream patch adding nobar cmdline argument
Filename:
MIME Type:
Creator:
George Beshers
Created:
2012-05-24 21:30:53 UTC
Size:
3.72 KB
patch
obsolete
>commit 7bd1c365fd124624191d49dcc1eb9759d6017ec3 >Author: Mike Habeck <habeck@sgi.com> >Date: Wed May 12 11:14:32 2010 -0700 > > x86/PCI: Add option to not assign BAR's if not already assigned > > The Linux kernel assigns BARs that a BIOS did not assign, most likely > to handle broken BIOSes that didn't enumerate the devices correctly. > On UV the BIOS purposely doesn't assign I/O BARs for certain devices/ > drivers we know don't use them (examples, LSI SAS, Qlogic FC, ...). > We purposely don't assign these I/O BARs because I/O Space is a very > limited resource. There is only 64k of I/O Space, and in a PCIe > topology that space gets divided up into 4k chucks (this is due to > the fact that a pci-to-pci bridge's I/O decoder is aligned at 4k)... > Thus a system can have at most 16 cards with I/O BARs: (64k / 4k = 16) > > SGI needs to scale to >16 devices with I/O BARs. So by not assigning > I/O BARs on devices we know don't use them, we can do that (iff the > kernel doesn't go and assign these BARs that the BIOS purposely didn't > assign). > > This patch will not assign a resource to a device BAR if that BAR was > not assigned by the BIOS, and the kernel cmdline option 'pci=nobar' > was specified. This patch is closely modeled after the 'pci=norom' > option that currently exists in the tree. > > Signed-off-by: Mike Habeck <habeck@sgi.com> > Signed-off-by: Mike Travis <travis@sgi.com> > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> > >diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt >index 2b2407d..4fac69b 100644 >--- a/Documentation/kernel-parameters.txt >+++ b/Documentation/kernel-parameters.txt >@@ -1970,6 +1970,8 @@ and is between 256 and 4096 characters. It is defined in the file > norom [X86] Do not assign address space to > expansion ROMs that do not already have > BIOS assigned address ranges. >+ nobar [X86] Do not assign address space to the >+ BARs that weren't assigned by the BIOS. > irqmask=0xMMMM [X86] Set a bit mask of IRQs allowed to be > assigned automatically to PCI devices. You can > make the kernel exclude IRQs of your ISA cards >diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h >index cd2a31d..49c7219 100644 >--- a/arch/x86/include/asm/pci_x86.h >+++ b/arch/x86/include/asm/pci_x86.h >@@ -30,6 +30,7 @@ > #define PCI_HAS_IO_ECS 0x40000 > #define PCI_NOASSIGN_ROMS 0x80000 > #define PCI_ROOT_NO_CRS 0x100000 >+#define PCI_NOASSIGN_BARS 0x200000 > > extern unsigned int pci_probe; > extern unsigned long pirq_table_addr; >diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c >index 215a27a..a0772af 100644 >--- a/arch/x86/pci/common.c >+++ b/arch/x86/pci/common.c >@@ -125,6 +125,23 @@ void __init dmi_check_skip_isa_align(void) > static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) > { > struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE]; >+ struct resource *bar_r; >+ int bar; >+ >+ if (pci_probe & PCI_NOASSIGN_BARS) { >+ /* >+ * If the BIOS did not assign the BAR, zero out the >+ * resource so the kernel doesn't attmept to assign >+ * it later on in pci_assign_unassigned_resources >+ */ >+ for (bar = 0; bar <= PCI_STD_RESOURCE_END; bar++) { >+ bar_r = &dev->resource[bar]; >+ if (bar_r->start == 0 && bar_r->end != 0) { >+ bar_r->flags = 0; >+ bar_r->end = 0; >+ } >+ } >+ } > > if (pci_probe & PCI_NOASSIGN_ROMS) { > if (rom_r->parent) >@@ -509,6 +526,9 @@ char * __devinit pcibios_setup(char *str) > } else if (!strcmp(str, "norom")) { > pci_probe |= PCI_NOASSIGN_ROMS; > return NULL; >+ } else if (!strcmp(str, "nobar")) { >+ pci_probe |= PCI_NOASSIGN_BARS; >+ return NULL; > } else if (!strcmp(str, "assign-busses")) { > pci_probe |= PCI_ASSIGN_ALL_BUSSES; > return NULL;
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 825036
: 586713