提交 ccc0d38e 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6

* '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
...@@ -375,7 +375,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res, ...@@ -375,7 +375,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res,
if (!fixmem32) if (!fixmem32)
return AE_OK; return AE_OK;
if ((mcfg_res->start >= fixmem32->address) && if ((mcfg_res->start >= fixmem32->address) &&
(mcfg_res->end <= (fixmem32->address + (mcfg_res->end < (fixmem32->address +
fixmem32->address_length))) { fixmem32->address_length))) {
mcfg_res->flags = 1; mcfg_res->flags = 1;
return AE_CTRL_TERMINATE; return AE_CTRL_TERMINATE;
...@@ -392,7 +392,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res, ...@@ -392,7 +392,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res,
return AE_OK; return AE_OK;
if ((mcfg_res->start >= address.minimum) && if ((mcfg_res->start >= address.minimum) &&
(mcfg_res->end <= (address.minimum + address.address_length))) { (mcfg_res->end < (address.minimum + address.address_length))) {
mcfg_res->flags = 1; mcfg_res->flags = 1;
return AE_CTRL_TERMINATE; return AE_CTRL_TERMINATE;
} }
...@@ -418,7 +418,7 @@ static int __init is_acpi_reserved(u64 start, u64 end, unsigned not_used) ...@@ -418,7 +418,7 @@ static int __init is_acpi_reserved(u64 start, u64 end, unsigned not_used)
struct resource mcfg_res; struct resource mcfg_res;
mcfg_res.start = start; mcfg_res.start = start;
mcfg_res.end = end; mcfg_res.end = end - 1;
mcfg_res.flags = 0; mcfg_res.flags = 0;
acpi_get_devices("PNP0C01", find_mboard_resource, &mcfg_res, NULL); acpi_get_devices("PNP0C01", find_mboard_resource, &mcfg_res, NULL);
......
...@@ -745,6 +745,8 @@ int pci_setup_device(struct pci_dev *dev) ...@@ -745,6 +745,8 @@ int pci_setup_device(struct pci_dev *dev)
/* Early fixups, before probing the BARs */ /* Early fixups, before probing the BARs */
pci_fixup_device(pci_fixup_early, dev); pci_fixup_device(pci_fixup_early, dev);
/* device class may be changed after fixup */
class = dev->class >> 8;
switch (dev->hdr_type) { /* header type */ switch (dev->hdr_type) { /* header type */
case PCI_HEADER_TYPE_NORMAL: /* standard header */ case PCI_HEADER_TYPE_NORMAL: /* standard header */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册