Lines Matching +full:start +full:- +full:year
1 // SPDX-License-Identifier: GPL-2.0
8 #include <linux/pci-acpi.h>
40 printk(KERN_INFO "PCI: %s detected: ignoring ACPI _SEG\n", id->ident); in set_ignore_seg()
48 id->ident); in set_no_e820()
67 .ident = "ASRock ALiveSATA2-GLAN",
69 DMI_MATCH(DMI_PRODUCT_NAME, "ALiveSATA2-GLAN"),
76 .ident = "ASUS M2V-MX SE",
79 DMI_MATCH(DMI_BOARD_NAME, "M2V-MX SE"),
86 .ident = "MSI MS-7253",
88 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
89 DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
93 /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/931368 */
94 /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1033299 */
97 .ident = "Foxconn K8M890-8237A",
100 DMI_MATCH(DMI_BOARD_NAME, "K8M890-8237A"),
133 DMI_MATCH(DMI_PRODUCT_NAME, "X8DTH-i/6/iF/6F"),
143 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
150 * an E820 reserved region that covers the entire 32-bit host
152 * _CRS means no space is available for hot-added or uninitialized
154 * and hot-added Thunderbolt devices. See the commit log for
167 * The Acer Spin 5 (SP513-54N) has the same E820 reservation covering
168 * the entire _CRS 32-bit window issue as the Lenovo *IIL* models.
173 .ident = "Acer Spin 5 (SP513-54N)",
176 DMI_MATCH(DMI_PRODUCT_NAME, "Spin SP513-54N"),
181 * Clevo X170KM-G barebones have the same E820 reservation covering
182 * the entire _CRS 32-bit window issue as the Lenovo *IIL* models.
187 .ident = "Clevo X170KM-G Barebone",
189 DMI_MATCH(DMI_BOARD_NAME, "X170KM-G"),
197 int year = dmi_get_bios_year(); in pci_acpi_crs_quirks() local
199 if (year >= 0 && year < 2008 && iomem_resource.end <= 0xffffffff) in pci_acpi_crs_quirks()
211 * leaving none for hot-added or uninitialized devices. These E820 in pci_acpi_crs_quirks()
213 * clipping by default for post-2022 machines. in pci_acpi_crs_quirks()
215 * We already have quirks to disable clipping for pre-2023 in pci_acpi_crs_quirks()
217 * post-2022 machines that incorrectly include unusable space in in pci_acpi_crs_quirks()
220 if (year >= 2023) in pci_acpi_crs_quirks()
248 …printk(KERN_INFO "PCI: Please notify linux-pci@vger.kernel.org so future kernels can this automati… in pci_acpi_crs_quirks()
259 return -EIO; in check_segment()
279 struct acpi_pci_root *root = ci->root; in setup_mcfg_map()
280 struct device *dev = &ci->bridge->dev; in setup_mcfg_map()
283 info->start_bus = (u8)root->secondary.start; in setup_mcfg_map()
284 info->end_bus = (u8)root->secondary.end; in setup_mcfg_map()
285 info->mcfg_added = false; in setup_mcfg_map()
286 seg = info->sd.domain; in setup_mcfg_map()
295 result = pci_mmconfig_insert(dev, seg, info->start_bus, info->end_bus, in setup_mcfg_map()
296 root->mcfg_addr); in setup_mcfg_map()
301 info->mcfg_added = true; in setup_mcfg_map()
302 } else if (result != -EEXIST) in setup_mcfg_map()
314 if (info->mcfg_added) { in teardown_mcfg_map()
315 pci_mmconfig_delete(info->sd.domain, in teardown_mcfg_map()
316 info->start_bus, info->end_bus); in teardown_mcfg_map()
317 info->mcfg_added = false; in teardown_mcfg_map()
333 int busnum = root->secondary.start; in pci_acpi_root_get_node()
334 struct acpi_device *device = root->device; in pci_acpi_root_get_node()
335 int node = acpi_get_node(device->handle); in pci_acpi_root_get_node()
340 …dev_info(&device->dev, FW_BUG "no _PXM; falling back to node %d from hardware (may be inconsistent… in pci_acpi_root_get_node()
369 * IO port [0xCF8-0xCFF] is consumed by the host bridge itself
372 * So explicitly filter out PCI CFG IO ports[0xCF8-0xCFF].
376 return (res->flags & IORESOURCE_IO) && in resource_is_pcicfg_ioport()
377 res->start == 0xCF8 && res->end == 0xCFF; in resource_is_pcicfg_ioport()
382 struct acpi_device *device = ci->bridge; in pci_acpi_root_prepare_resources()
383 int busnum = ci->root->secondary.start; in pci_acpi_root_prepare_resources()
390 resource_list_for_each_entry_safe(entry, tmp, &ci->resources) in pci_acpi_root_prepare_resources()
391 if (resource_is_pcicfg_ioport(entry->res)) in pci_acpi_root_prepare_resources()
396 resource_list_for_each_entry_safe(entry, tmp, &ci->resources) { in pci_acpi_root_prepare_resources()
397 dev_printk(KERN_DEBUG, &device->dev, in pci_acpi_root_prepare_resources()
398 "host bridge window %pR (ignored)\n", entry->res); in pci_acpi_root_prepare_resources()
401 x86_pci_root_bus_resources(busnum, &ci->resources); in pci_acpi_root_prepare_resources()
415 int domain = root->segment; in pci_acpi_scan_root()
416 int busnum = root->secondary.start; in pci_acpi_scan_root()
421 root->segment = domain = 0; in pci_acpi_scan_root()
434 * its bus->sysdata. in pci_acpi_scan_root()
439 .companion = root->device in pci_acpi_scan_root()
442 memcpy(bus->sysdata, &sd, sizeof(sd)); in pci_acpi_scan_root()
448 dev_err(&root->device->dev, in pci_acpi_scan_root()
452 info->sd.domain = domain; in pci_acpi_scan_root()
453 info->sd.node = node; in pci_acpi_scan_root()
454 info->sd.companion = root->device; in pci_acpi_scan_root()
456 &info->common, &info->sd); in pci_acpi_scan_root()
460 /* After the PCI-E bus has been walked and all devices discovered, in pci_acpi_scan_root()
465 list_for_each_entry(child, &bus->children, node) in pci_acpi_scan_root()
480 if (!bridge->dev.parent) { in pcibios_root_bridge_prepare()
481 struct pci_sysdata *sd = bridge->bus->sysdata; in pcibios_root_bridge_prepare()
482 ACPI_COMPANION_SET(&bridge->dev, sd->companion); in pcibios_root_bridge_prepare()
492 return -ENODEV; in pci_acpi_init()