Lines Matching refs:cfg
36 static void __init pci_mmconfig_remove(struct pci_mmcfg_region *cfg)
38 if (cfg->res.parent)
39 release_resource(&cfg->res);
40 list_del(&cfg->list);
41 kfree(cfg);
46 struct pci_mmcfg_region *cfg, *tmp;
49 list_for_each_entry_safe(cfg, tmp, &pci_mmcfg_list, list)
50 pci_mmconfig_remove(cfg);
55 struct pci_mmcfg_region *cfg;
58 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list, pci_mmcfg_lock_held()) {
59 if (cfg->segment > new->segment ||
60 (cfg->segment == new->segment &&
61 cfg->start_bus >= new->start_bus)) {
62 list_add_tail_rcu(&new->list, &cfg->list);
120 struct pci_mmcfg_region *cfg;
122 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list, pci_mmcfg_lock_held())
123 if (cfg->segment == segment &&
124 cfg->start_bus <= bus && bus <= cfg->end_bus)
125 return cfg;
326 struct pci_mmcfg_region *cfg, *cfgx;
329 list_for_each_entry(cfg, &pci_mmcfg_list, list) {
330 if (cfg->end_bus < cfg->start_bus)
331 cfg->end_bus = 255;
334 if (cfg->list.next == &pci_mmcfg_list)
337 cfgx = list_entry(cfg->list.next, typeof(*cfg), list);
338 if (cfg->end_bus >= cfgx->start_bus)
339 cfg->end_bus = cfgx->start_bus - 1;
448 struct pci_mmcfg_region *cfg,
451 u64 addr = cfg->res.start;
452 u64 size = resource_size(&cfg->res);
468 &cfg->res, method);
471 &cfg->res, method);
475 cfg->end_bus = cfg->start_bus + ((size>>20) - 1);
476 num_buses = cfg->end_bus - cfg->start_bus + 1;
477 cfg->res.end = cfg->res.start +
479 snprintf(cfg->name, PCI_MMCFG_RESOURCE_NAME_LEN,
481 cfg->segment, cfg->start_bus, cfg->end_bus);
487 &cfg->res, (unsigned long) cfg->address);
492 cfg->segment, cfg->start_bus, cfg->end_bus,
493 &cfg->res, (unsigned long) cfg->address);
500 pci_mmcfg_check_reserved(struct device *dev, struct pci_mmcfg_region *cfg, int early)
503 if (is_mmconf_reserved(is_acpi_reserved, cfg, dev, 0))
510 &cfg->res);
515 &cfg->res);
530 return is_mmconf_reserved(e820__mapped_all, cfg, dev, 1);
537 struct pci_mmcfg_region *cfg;
539 list_for_each_entry(cfg, &pci_mmcfg_list, list) {
540 if (pci_mmcfg_check_reserved(NULL, cfg, early) == 0) {
549 struct acpi_mcfg_allocation *cfg)
551 if (cfg->address < 0xFFFFFFFF)
561 "is above 4GB, ignored\n", cfg->pci_segment,
562 cfg->start_bus_number, cfg->end_bus_number, cfg->address);
569 struct acpi_mcfg_allocation *cfg_table, *cfg;
593 cfg = &cfg_table[i];
594 if (acpi_mcfg_check_entry(mcfg, cfg)) {
599 if (pci_mmconfig_add(cfg->pci_segment, cfg->start_bus_number,
600 cfg->end_bus_number, cfg->address) == NULL) {
617 struct pci_mmcfg_region *cfg;
623 list_for_each_entry(cfg, &pci_mmcfg_list, list) {
624 rc = func(cfg->res.start, resource_size(&cfg->res), data);
643 const struct pci_mmcfg_region *cfg;
645 list_for_each_entry(cfg, &pci_mmcfg_list, list) {
646 if (cfg->segment)
648 pcibios_last_bus = cfg->end_bus;
693 struct pci_mmcfg_region *cfg;
706 list_for_each_entry(cfg, &pci_mmcfg_list, list)
707 if (!cfg->res.parent)
708 insert_resource(&iomem_resource, &cfg->res);
726 struct pci_mmcfg_region *cfg;
735 cfg = pci_mmconfig_lookup(seg, start);
736 if (cfg) {
737 if (cfg->end_bus < end)
742 cfg->segment, cfg->start_bus, cfg->end_bus);
753 cfg = pci_mmconfig_alloc(seg, start, end, addr);
754 if (cfg == NULL) {
757 } else if (!pci_mmcfg_check_reserved(dev, cfg, 0)) {
759 &cfg->res);
764 &cfg->res);
770 &cfg->res, tmp->name, tmp);
771 } else if (pci_mmcfg_arch_map(cfg)) {
773 &cfg->res);
775 list_add_sorted(cfg);
777 &cfg->res, (unsigned long)addr);
778 cfg = NULL;
783 if (cfg) {
784 if (cfg->res.parent)
785 release_resource(&cfg->res);
786 kfree(cfg);
797 struct pci_mmcfg_region *cfg;
800 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list)
801 if (cfg->segment == seg && cfg->start_bus == start &&
802 cfg->end_bus == end) {
803 list_del_rcu(&cfg->list);
805 pci_mmcfg_arch_unmap(cfg);
806 if (cfg->res.parent)
807 release_resource(&cfg->res);
809 kfree(cfg);