Lines Matching full:cfg
37 static void __init pci_mmconfig_remove(struct pci_mmcfg_region *cfg) in pci_mmconfig_remove() argument
39 if (cfg->res.parent) in pci_mmconfig_remove()
40 release_resource(&cfg->res); in pci_mmconfig_remove()
41 list_del(&cfg->list); in pci_mmconfig_remove()
42 kfree(cfg); in pci_mmconfig_remove()
47 struct pci_mmcfg_region *cfg, *tmp; in free_all_mmcfg() local
50 list_for_each_entry_safe(cfg, tmp, &pci_mmcfg_list, list) in free_all_mmcfg()
51 pci_mmconfig_remove(cfg); in free_all_mmcfg()
56 struct pci_mmcfg_region *cfg; in list_add_sorted() local
59 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list, pci_mmcfg_lock_held()) { in list_add_sorted()
60 if (cfg->segment > new->segment || in list_add_sorted()
61 (cfg->segment == new->segment && in list_add_sorted()
62 cfg->start_bus >= new->start_bus)) { in list_add_sorted()
63 list_add_tail_rcu(&new->list, &cfg->list); in list_add_sorted()
120 struct pci_mmcfg_region *cfg; in pci_mmconfig_lookup() local
122 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list, pci_mmcfg_lock_held()) in pci_mmconfig_lookup()
123 if (cfg->segment == segment && in pci_mmconfig_lookup()
124 cfg->start_bus <= bus && bus <= cfg->end_bus) in pci_mmconfig_lookup()
125 return cfg; in pci_mmconfig_lookup()
326 struct pci_mmcfg_region *cfg, *cfgx; in pci_mmcfg_check_end_bus_number() local
329 list_for_each_entry(cfg, &pci_mmcfg_list, list) { in pci_mmcfg_check_end_bus_number()
330 if (cfg->end_bus < cfg->start_bus) in pci_mmcfg_check_end_bus_number()
331 cfg->end_bus = 255; in pci_mmcfg_check_end_bus_number()
334 if (cfg->list.next == &pci_mmcfg_list) in pci_mmcfg_check_end_bus_number()
337 cfgx = list_entry(cfg->list.next, typeof(*cfg), list); in pci_mmcfg_check_end_bus_number()
338 if (cfg->end_bus >= cfgx->start_bus) in pci_mmcfg_check_end_bus_number()
339 cfg->end_bus = cfgx->start_bus - 1; in pci_mmcfg_check_end_bus_number()
471 struct pci_mmcfg_region *cfg, in is_mmconf_reserved() argument
474 u64 addr = cfg->res.start; in is_mmconf_reserved()
475 u64 size = resource_size(&cfg->res); in is_mmconf_reserved()
490 &cfg->res, method); in is_mmconf_reserved()
492 pr_info("ECAM %pR reserved as %s\n", &cfg->res, method); in is_mmconf_reserved()
496 cfg->end_bus = cfg->start_bus + ((size>>20) - 1); in is_mmconf_reserved()
497 num_buses = cfg->end_bus - cfg->start_bus + 1; in is_mmconf_reserved()
498 cfg->res.end = cfg->res.start + in is_mmconf_reserved()
500 snprintf(cfg->name, PCI_MMCFG_RESOURCE_NAME_LEN, in is_mmconf_reserved()
502 cfg->segment, cfg->start_bus, cfg->end_bus); in is_mmconf_reserved()
506 &cfg->res, (unsigned long) cfg->address); in is_mmconf_reserved()
509 &cfg->res, (unsigned long) cfg->address, in is_mmconf_reserved()
510 cfg->segment, cfg->start_bus, cfg->end_bus); in is_mmconf_reserved()
517 struct pci_mmcfg_region *cfg, int early) in pci_mmcfg_reserved() argument
542 return is_mmconf_reserved(e820__mapped_all, cfg, dev, in pci_mmcfg_reserved()
549 if (is_mmconf_reserved(is_acpi_reserved, cfg, dev, in pci_mmcfg_reserved()
555 &cfg->res); in pci_mmcfg_reserved()
558 &cfg->res); in pci_mmcfg_reserved()
560 if (is_efi_mmio(&cfg->res)) { in pci_mmcfg_reserved()
562 &cfg->res); in pci_mmcfg_reserved()
564 &cfg->res); in pci_mmcfg_reserved()
567 &cfg->res, conflict->name, conflict); in pci_mmcfg_reserved()
570 &cfg->res); in pci_mmcfg_reserved()
586 struct pci_mmcfg_region *cfg; in pci_mmcfg_reject_broken() local
588 list_for_each_entry(cfg, &pci_mmcfg_list, list) { in pci_mmcfg_reject_broken()
589 if (!pci_mmcfg_reserved(NULL, cfg, early)) { in pci_mmcfg_reject_broken()
591 &cfg->res); in pci_mmcfg_reject_broken()
599 struct acpi_mcfg_allocation *cfg) in acpi_mcfg_valid_entry() argument
601 if (cfg->address < 0xFFFFFFFF) in acpi_mcfg_valid_entry()
611 cfg->address, cfg->pci_segment, cfg->start_bus_number, in acpi_mcfg_valid_entry()
612 cfg->end_bus_number); in acpi_mcfg_valid_entry()
619 struct acpi_mcfg_allocation *cfg_table, *cfg; in pci_parse_mcfg() local
643 cfg = &cfg_table[i]; in pci_parse_mcfg()
644 if (!acpi_mcfg_valid_entry(mcfg, cfg)) { in pci_parse_mcfg()
649 if (pci_mmconfig_add(cfg->pci_segment, cfg->start_bus_number, in pci_parse_mcfg()
650 cfg->end_bus_number, cfg->address) == NULL) { in pci_parse_mcfg()
667 struct pci_mmcfg_region *cfg; in pci_mmcfg_for_each_region() local
673 list_for_each_entry(cfg, &pci_mmcfg_list, list) { in pci_mmcfg_for_each_region()
674 rc = func(cfg->res.start, resource_size(&cfg->res), data); in pci_mmcfg_for_each_region()
695 const struct pci_mmcfg_region *cfg; in __pci_mmcfg_init() local
697 list_for_each_entry(cfg, &pci_mmcfg_list, list) { in __pci_mmcfg_init()
698 if (cfg->segment) in __pci_mmcfg_init()
700 pcibios_last_bus = cfg->end_bus; in __pci_mmcfg_init()
749 struct pci_mmcfg_region *cfg; in pci_mmcfg_late_insert_resources() local
764 list_for_each_entry(cfg, &pci_mmcfg_list, list) { in pci_mmcfg_late_insert_resources()
765 if (!cfg->res.parent) { in pci_mmcfg_late_insert_resources()
766 pr_debug("%s() insert %pR\n", __func__, &cfg->res); in pci_mmcfg_late_insert_resources()
767 insert_resource(&iomem_resource, &cfg->res); in pci_mmcfg_late_insert_resources()
787 struct pci_mmcfg_region *cfg; in pci_mmconfig_insert() local
798 cfg = pci_mmconfig_lookup(seg, start); in pci_mmconfig_insert()
799 if (cfg) { in pci_mmconfig_insert()
800 if (cfg->end_bus < end) in pci_mmconfig_insert()
802 &cfg->res, cfg->segment, cfg->start_bus, in pci_mmconfig_insert()
803 cfg->end_bus); in pci_mmconfig_insert()
818 cfg = pci_mmconfig_alloc(seg, start, end, addr); in pci_mmconfig_insert()
819 if (cfg == NULL) { in pci_mmconfig_insert()
822 } else if (!pci_mmcfg_reserved(dev, cfg, 0)) { in pci_mmconfig_insert()
824 &cfg->res); in pci_mmconfig_insert()
829 &cfg->res); in pci_mmconfig_insert()
833 &cfg->res, tmp->name, tmp); in pci_mmconfig_insert()
834 } else if (pci_mmcfg_arch_map(cfg)) { in pci_mmconfig_insert()
835 dev_warn(dev, "fail to map ECAM %pR\n", &cfg->res); in pci_mmconfig_insert()
837 list_add_sorted(cfg); in pci_mmconfig_insert()
839 &cfg->res, (unsigned long)addr); in pci_mmconfig_insert()
840 cfg = NULL; in pci_mmconfig_insert()
845 if (cfg) { in pci_mmconfig_insert()
846 if (cfg->res.parent) in pci_mmconfig_insert()
847 release_resource(&cfg->res); in pci_mmconfig_insert()
848 kfree(cfg); in pci_mmconfig_insert()
859 struct pci_mmcfg_region *cfg; in pci_mmconfig_delete() local
862 list_for_each_entry_rcu(cfg, &pci_mmcfg_list, list) in pci_mmconfig_delete()
863 if (cfg->segment == seg && cfg->start_bus == start && in pci_mmconfig_delete()
864 cfg->end_bus == end) { in pci_mmconfig_delete()
865 list_del_rcu(&cfg->list); in pci_mmconfig_delete()
867 pci_mmcfg_arch_unmap(cfg); in pci_mmconfig_delete()
868 if (cfg->res.parent) in pci_mmconfig_delete()
869 release_resource(&cfg->res); in pci_mmconfig_delete()
871 kfree(cfg); in pci_mmconfig_delete()