On Sun, Jan 14, 2007 at 06:27:18AM +0900, OGAWA Hirofumi wrote: > This rejects a broken MCFG tables on Asus etc. > Arjan and Andi suggest this.
And I agree completely with the principle. If you don't know the chipset on a first-name basis, trash the MCFG unless it's squeaky clean (or you don't have a choice). > +static void __init pci_mmcfg_reject_broken(void) > +{ > + struct acpi_table_mcfg_config *cfg = &pci_mmcfg_config[0]; > + > + /* > + * Handle more broken MCFG tables on Asus etc. > + * They only contain a single entry for bus 0-0. > + */ > + if (pci_mmcfg_config_num == 1 && > + cfg->pci_segment_group_number == 0 && > + (cfg->start_bus_number | cfg->end_bus_number) == 0) { > + kfree(pci_mmcfg_config); > + pci_mmcfg_config = NULL; > + pci_mmcfg_config_num = 0; > + > + printk(KERN_ERR "PCI: start and end of bus number is 0. " > + "Rejected as broken MCFG."); > + } > +} > + If you're going to do a MCFG validation function, and I don't have a problem with that, you should put the e820 test in it too. OG. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/