 /* Kludge for now. Don't use mmconfig on AMD systems because those have some busses where mmconfig doesn't work, and we don't parse ACPI MCFG well enough to handle that. Remove when proper handling is added. */ if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD) return 0; 
static int __init pci_mmcfg_init(void){	int i;	if ((pci_probe & PCI_PROBE_MMCONF) == 0)		return 0;	acpi_table_parse(ACPI_MCFG, acpi_parse_mcfg);	if ((pci_mmcfg_config_num == 0) ||	    (pci_mmcfg_config == NULL) ||	    (pci_mmcfg_config[0].base_address == 0))		return 0;	/* Kludge for now. Don't use mmconfig on AMD systems because	   those have some busses where mmconfig doesn't work,	   and we don't parse ACPI MCFG well enough to handle that. 	   Remove when proper handling is added. */	if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)		return 0; 	/* RED-PEN i386 doesn't do _nocache right now */	pci_mmcfg_virt = kmalloc(sizeof(*pci_mmcfg_virt) * pci_mmcfg_config_num, GFP_KERNEL);	if (pci_mmcfg_virt == NULL) {		printk("PCI: Can not allocate memory for mmconfig structures\n");		return 0;	}	for (i = 0; i < pci_mmcfg_config_num; ++i) {		pci_mmcfg_virt[i].cfg = &pci_mmcfg_config[i];		pci_mmcfg_virt[i].virt = ioremap_nocache(pci_mmcfg_config[i].base_address, MMCONFIG_APER_SIZE);		if (!pci_mmcfg_virt[i].virt) {			printk("PCI: Cannot map mmconfig aperture for segment %d\n",			       pci_mmcfg_config[i].pci_segment_group_number);			return 0;		}		printk(KERN_INFO "PCI: Using MMCONFIG at %x\n", pci_mmcfg_config[i].base_address);	}	raw_pci_ops = &pci_mmcfg;	pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF;	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f343bb4cd7cc76d49d72415c8b867b1073d3c6db/mmconfig.c/clean/arch/x86_64/pci/mmconfig.c