* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: x86/pci: fix mmconfig detection with 32bit near 4g PCI: use fixed-up device class when configuring device
Unified · Split
| @@ -375,7 +375,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res, · 374 unmodified lines | ||
| 375 | 375 | if (!fixmem32) |
| 376 | 376 | return AE_OK; |
| 377 | 377 | if ((mcfg_res->start >= fixmem32->address) && |
| 378 | − (mcfg_res->end <= (fixmem32->address + | |
| 378 | + (mcfg_res->end < (fixmem32->address + | |
| 379 | 379 | fixmem32->address_length))) { |
| 380 | 380 | mcfg_res->flags = 1; |
| 381 | 381 | return AE_CTRL_TERMINATE; |
| @@ -392,7 +392,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res, · 10 unmodified lines | ||
| 392 | 392 | return AE_OK; |
| 393 | 393 | |
| 394 | 394 | if ((mcfg_res->start >= address.minimum) && |
| 395 | − (mcfg_res->end <= (address.minimum + address.address_length))) { | |
| 395 | + (mcfg_res->end < (address.minimum + address.address_length))) { | |
| 396 | 396 | mcfg_res->flags = 1; |
| 397 | 397 | return AE_CTRL_TERMINATE; |
| 398 | 398 | } |
| @@ -418,7 +418,7 @@ static int __init is_acpi_reserved(u64 start, u64 end, unsigned not_used) · 19 unmodified lines | ||
| 418 | 418 | struct resource mcfg_res; |
| 419 | 419 | |
| 420 | 420 | mcfg_res.start = start; |
| 421 | − mcfg_res.end = end; | |
| 421 | + mcfg_res.end = end - 1; | |
| 422 | 422 | mcfg_res.flags = 0; |
| 423 | 423 | |
| 424 | 424 | acpi_get_devices("PNP0C01", find_mboard_resource, &mcfg_res, NULL); |
| @@ -745,6 +745,8 @@ int pci_setup_device(struct pci_dev *dev) · 744 unmodified lines | ||
| 745 | 745 | |
| 746 | 746 | /* Early fixups, before probing the BARs */ |
| 747 | 747 | pci_fixup_device(pci_fixup_early, dev); |
| 748 | + /* device class may be changed after fixup */ | |
| 749 | + class = dev->class >> 8; | |
| 748 | 750 | |
| 749 | 751 | switch (dev->hdr_type) { /* header type */ |
| 750 | 752 | case PCI_HEADER_TYPE_NORMAL: /* standard header */ |