Loading Documentation/kernel-parameters.txt +0 −2 Original line number Diff line number Diff line Loading @@ -1189,8 +1189,6 @@ running once the system is up. Mechanism 2. nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI Configuration mmconf [IA-32,X86_64] Force MMCONFIG. This is useful to override the builtin blacklist. nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide. Loading Makefile +3 −2 Original line number Diff line number Diff line VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 18 EXTRAVERSION = -rc7 NAME=Crazed Snow-Weasel EXTRAVERSION = NAME=Avast! A bilge rat! # *DOCUMENTATION* # To see a list of typical targets execute "make help" Loading Loading @@ -1082,6 +1082,7 @@ help: @echo 'Static analysers' @echo ' checkstack - Generate a list of stack hogs' @echo ' namespacecheck - Name space analysis on compiled kernel' @echo ' headers_check - Sanity check on exported headers' @echo '' @echo 'Kernel packaging:' @$(MAKE) $(build)=$(package-dir) help Loading arch/i386/kernel/setup.c +32 −0 Original line number Diff line number Diff line Loading @@ -956,6 +956,38 @@ efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg) return 0; } /* * This function checks if the entire range <start,end> is mapped with type. * * Note: this function only works correct if the e820 table is sorted and * not-overlapping, which is the case */ int __init e820_all_mapped(unsigned long s, unsigned long e, unsigned type) { u64 start = s; u64 end = e; int i; for (i = 0; i < e820.nr_map; i++) { struct e820entry *ei = &e820.map[i]; if (type && ei->type != type) continue; /* is the region (part) in overlap with the current region ?*/ if (ei->addr >= end || ei->addr + ei->size <= start) continue; /* if the region is at the beginning of <start,end> we move * start to the end of the region since it's ok until there */ if (ei->addr <= start) start = ei->addr + ei->size; /* if start is now at or beyond end, we're done, full * coverage */ if (start >= end) return 1; /* we're done */ } return 0; } /* * Find the highest page frame number we have available */ Loading arch/i386/pci/common.c +0 −5 Original line number Diff line number Diff line Loading @@ -237,11 +237,6 @@ char * __devinit pcibios_setup(char *str) pci_probe &= ~PCI_PROBE_MMCONF; return NULL; } /* override DMI blacklist */ else if (!strcmp(str, "mmconf")) { pci_probe |= PCI_PROBE_MMCONF_FORCE; return NULL; } #endif else if (!strcmp(str, "noacpi")) { acpi_noirq_set(); Loading arch/i386/pci/mmconfig.c +10 −24 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ #include <linux/pci.h> #include <linux/init.h> #include <linux/acpi.h> #include <linux/dmi.h> #include <asm/e820.h> #include "pci.h" Loading Loading @@ -188,31 +187,9 @@ static __init void unreachable_devices(void) } } static int disable_mcfg(struct dmi_system_id *d) { printk("PCI: %s detected. Disabling MCFG.\n", d->ident); pci_probe &= ~PCI_PROBE_MMCONF; return 0; } static struct dmi_system_id __initdata dmi_bad_mcfg[] = { /* Has broken MCFG table that makes the system hang when used */ { .callback = disable_mcfg, .ident = "Intel D3C5105 SDV", .matches = { DMI_MATCH(DMI_BIOS_VENDOR, "Intel"), DMI_MATCH(DMI_BOARD_NAME, "D26928"), }, }, {} }; void __init pci_mmcfg_init(void) { dmi_check_system(dmi_bad_mcfg); if ((pci_probe & (PCI_PROBE_MMCONF_FORCE|PCI_PROBE_MMCONF)) == 0) if ((pci_probe & PCI_PROBE_MMCONF) == 0) return; acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg); Loading @@ -221,6 +198,15 @@ void __init pci_mmcfg_init(void) (pci_mmcfg_config[0].base_address == 0)) return; if (!e820_all_mapped(pci_mmcfg_config[0].base_address, pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN, E820_RESERVED)) { printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n", pci_mmcfg_config[0].base_address); printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); return; } printk(KERN_INFO "PCI: Using MMCONFIG\n"); raw_pci_ops = &pci_mmcfg; pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; Loading Loading
Documentation/kernel-parameters.txt +0 −2 Original line number Diff line number Diff line Loading @@ -1189,8 +1189,6 @@ running once the system is up. Mechanism 2. nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI Configuration mmconf [IA-32,X86_64] Force MMCONFIG. This is useful to override the builtin blacklist. nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide. Loading
Makefile +3 −2 Original line number Diff line number Diff line VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 18 EXTRAVERSION = -rc7 NAME=Crazed Snow-Weasel EXTRAVERSION = NAME=Avast! A bilge rat! # *DOCUMENTATION* # To see a list of typical targets execute "make help" Loading Loading @@ -1082,6 +1082,7 @@ help: @echo 'Static analysers' @echo ' checkstack - Generate a list of stack hogs' @echo ' namespacecheck - Name space analysis on compiled kernel' @echo ' headers_check - Sanity check on exported headers' @echo '' @echo 'Kernel packaging:' @$(MAKE) $(build)=$(package-dir) help Loading
arch/i386/kernel/setup.c +32 −0 Original line number Diff line number Diff line Loading @@ -956,6 +956,38 @@ efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg) return 0; } /* * This function checks if the entire range <start,end> is mapped with type. * * Note: this function only works correct if the e820 table is sorted and * not-overlapping, which is the case */ int __init e820_all_mapped(unsigned long s, unsigned long e, unsigned type) { u64 start = s; u64 end = e; int i; for (i = 0; i < e820.nr_map; i++) { struct e820entry *ei = &e820.map[i]; if (type && ei->type != type) continue; /* is the region (part) in overlap with the current region ?*/ if (ei->addr >= end || ei->addr + ei->size <= start) continue; /* if the region is at the beginning of <start,end> we move * start to the end of the region since it's ok until there */ if (ei->addr <= start) start = ei->addr + ei->size; /* if start is now at or beyond end, we're done, full * coverage */ if (start >= end) return 1; /* we're done */ } return 0; } /* * Find the highest page frame number we have available */ Loading
arch/i386/pci/common.c +0 −5 Original line number Diff line number Diff line Loading @@ -237,11 +237,6 @@ char * __devinit pcibios_setup(char *str) pci_probe &= ~PCI_PROBE_MMCONF; return NULL; } /* override DMI blacklist */ else if (!strcmp(str, "mmconf")) { pci_probe |= PCI_PROBE_MMCONF_FORCE; return NULL; } #endif else if (!strcmp(str, "noacpi")) { acpi_noirq_set(); Loading
arch/i386/pci/mmconfig.c +10 −24 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ #include <linux/pci.h> #include <linux/init.h> #include <linux/acpi.h> #include <linux/dmi.h> #include <asm/e820.h> #include "pci.h" Loading Loading @@ -188,31 +187,9 @@ static __init void unreachable_devices(void) } } static int disable_mcfg(struct dmi_system_id *d) { printk("PCI: %s detected. Disabling MCFG.\n", d->ident); pci_probe &= ~PCI_PROBE_MMCONF; return 0; } static struct dmi_system_id __initdata dmi_bad_mcfg[] = { /* Has broken MCFG table that makes the system hang when used */ { .callback = disable_mcfg, .ident = "Intel D3C5105 SDV", .matches = { DMI_MATCH(DMI_BIOS_VENDOR, "Intel"), DMI_MATCH(DMI_BOARD_NAME, "D26928"), }, }, {} }; void __init pci_mmcfg_init(void) { dmi_check_system(dmi_bad_mcfg); if ((pci_probe & (PCI_PROBE_MMCONF_FORCE|PCI_PROBE_MMCONF)) == 0) if ((pci_probe & PCI_PROBE_MMCONF) == 0) return; acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg); Loading @@ -221,6 +198,15 @@ void __init pci_mmcfg_init(void) (pci_mmcfg_config[0].base_address == 0)) return; if (!e820_all_mapped(pci_mmcfg_config[0].base_address, pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN, E820_RESERVED)) { printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n", pci_mmcfg_config[0].base_address); printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); return; } printk(KERN_INFO "PCI: Using MMCONFIG\n"); raw_pci_ops = &pci_mmcfg; pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; Loading