Lines Matching +full:start +full:- +full:year

1 // SPDX-License-Identifier: GPL-2.0
11 #include <linux/pci-acpi.h>
43 pr_info("%s detected: ignoring ACPI _SEG\n", id->ident); in set_ignore_seg()
51 id->ident); in set_no_e820()
70 .ident = "ASRock ALiveSATA2-GLAN",
72 DMI_MATCH(DMI_PRODUCT_NAME, "ALiveSATA2-GLAN"),
79 .ident = "ASUS M2V-MX SE",
82 DMI_MATCH(DMI_BOARD_NAME, "M2V-MX SE"),
89 .ident = "MSI MS-7253",
91 DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"),
92 DMI_MATCH(DMI_BOARD_NAME, "MS-7253"),
96 /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/931368 */
97 /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1033299 */
100 .ident = "Foxconn K8M890-8237A",
103 DMI_MATCH(DMI_BOARD_NAME, "K8M890-8237A"),
136 DMI_MATCH(DMI_PRODUCT_NAME, "X8DTH-i/6/iF/6F"),
146 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
153 * an E820 reserved region that covers the entire 32-bit host
155 * _CRS means no space is available for hot-added or uninitialized
157 * and hot-added Thunderbolt devices. See the commit log for
170 * The Acer Spin 5 (SP513-54N) has the same E820 reservation covering
171 * the entire _CRS 32-bit window issue as the Lenovo *IIL* models.
176 .ident = "Acer Spin 5 (SP513-54N)",
179 DMI_MATCH(DMI_PRODUCT_NAME, "Spin SP513-54N"),
184 * Clevo X170KM-G barebones have the same E820 reservation covering
185 * the entire _CRS 32-bit window issue as the Lenovo *IIL* models.
190 .ident = "Clevo X170KM-G Barebone",
192 DMI_MATCH(DMI_BOARD_NAME, "X170KM-G"),
200 int year = dmi_get_bios_year(); in pci_acpi_crs_quirks() local
202 if (year >= 0 && year < 2008 && iomem_resource.end <= 0xffffffff) in pci_acpi_crs_quirks()
214 * leaving none for hot-added or uninitialized devices. These E820 in pci_acpi_crs_quirks()
216 * clipping by default for post-2022 machines. in pci_acpi_crs_quirks()
218 * We already have quirks to disable clipping for pre-2023 in pci_acpi_crs_quirks()
220 * post-2022 machines that incorrectly include unusable space in in pci_acpi_crs_quirks()
223 if (year >= 2023) in pci_acpi_crs_quirks()
250 pr_info("Please notify linux-pci@vger.kernel.org so future kernels can do this automatically\n"); in pci_acpi_crs_quirks()
259 return -EIO; in check_segment()
277 struct acpi_pci_root *root = ci->root; in setup_mcfg_map()
278 struct device *dev = &ci->bridge->dev; in setup_mcfg_map()
281 info->start_bus = (u8)root->secondary.start; in setup_mcfg_map()
282 info->end_bus = (u8)root->secondary.end; in setup_mcfg_map()
283 info->mcfg_added = false; in setup_mcfg_map()
284 seg = info->sd.domain; in setup_mcfg_map()
287 &root->secondary, &root->mcfg_addr); in setup_mcfg_map()
296 result = pci_mmconfig_insert(dev, seg, info->start_bus, info->end_bus, in setup_mcfg_map()
297 root->mcfg_addr); in setup_mcfg_map()
302 info->mcfg_added = true; in setup_mcfg_map()
303 } else if (result != -EEXIST) in setup_mcfg_map()
315 if (info->mcfg_added) { in teardown_mcfg_map()
316 pci_mmconfig_delete(info->sd.domain, in teardown_mcfg_map()
317 info->start_bus, info->end_bus); in teardown_mcfg_map()
318 info->mcfg_added = false; in teardown_mcfg_map()
334 int busnum = root->secondary.start; in pci_acpi_root_get_node()
335 struct acpi_device *device = root->device; in pci_acpi_root_get_node()
336 int node = acpi_get_node(device->handle); in pci_acpi_root_get_node()
341 …dev_info(&device->dev, FW_BUG "no _PXM; falling back to node %d from hardware (may be inconsistent… in pci_acpi_root_get_node()
370 * IO port [0xCF8-0xCFF] is consumed by the host bridge itself
373 * So explicitly filter out PCI CFG IO ports[0xCF8-0xCFF].
377 return (res->flags & IORESOURCE_IO) && in resource_is_pcicfg_ioport()
378 res->start == 0xCF8 && res->end == 0xCFF; in resource_is_pcicfg_ioport()
383 struct acpi_device *device = ci->bridge; in pci_acpi_root_prepare_resources()
384 int busnum = ci->root->secondary.start; in pci_acpi_root_prepare_resources()
391 resource_list_for_each_entry_safe(entry, tmp, &ci->resources) in pci_acpi_root_prepare_resources()
392 if (resource_is_pcicfg_ioport(entry->res)) in pci_acpi_root_prepare_resources()
397 resource_list_for_each_entry_safe(entry, tmp, &ci->resources) { in pci_acpi_root_prepare_resources()
398 dev_printk(KERN_DEBUG, &device->dev, in pci_acpi_root_prepare_resources()
399 "host bridge window %pR (ignored)\n", entry->res); in pci_acpi_root_prepare_resources()
402 x86_pci_root_bus_resources(busnum, &ci->resources); in pci_acpi_root_prepare_resources()
416 int domain = root->segment; in pci_acpi_scan_root()
417 int busnum = root->secondary.start; in pci_acpi_scan_root()
422 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()