From 3ebd207ba12fdcae3316da14a62165f93e20d826 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 27 Sep 2017 22:59:48 +0000 Subject: [PATCH] [PCI] Fix a port base adddress decoding bug. Port base addresses were always decoded like memory base addresses. Because of this bug, a device could have two port address ranges starting at the same base address but with different lengths. svn path=/trunk/; revision=75981 --- reactos/drivers/bus/pci/pdo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/bus/pci/pdo.c b/reactos/drivers/bus/pci/pdo.c index 7448fd276c4..bedaac36fc0 100644 --- a/reactos/drivers/bus/pci/pdo.c +++ b/reactos/drivers/bus/pci/pdo.c @@ -355,7 +355,9 @@ PdoGetRangeLength(PPDO_DEVICE_EXTENSION DeviceExtension, return TRUE; } - *Base = OriginalValue.Bar & PCI_ADDRESS_MEMORY_ADDRESS_MASK_64; + *Base = ((OriginalValue.Bar & PCI_ADDRESS_IO_SPACE) + ? (OriginalValue.Bar & PCI_ADDRESS_IO_ADDRESS_MASK_64) + : (OriginalValue.Bar & PCI_ADDRESS_MEMORY_ADDRESS_MASK_64)); *Length = ~((NewValue.Bar & PCI_ADDRESS_IO_SPACE) ? (NewValue.Bar & PCI_ADDRESS_IO_ADDRESS_MASK_64)