17#define PCI_ECAM_BUS_COUNT (PCI_MAX_BRIDGE_NUMBER + 1)
18#define PCI_ECAM_BUS_SIZE (PCI_MAX_DEVICES * PCI_MAX_FUNCTION * PCI_EXTENDED_CONFIG_LENGTH)
83 if (!
PciOpenKey(
L"\\Registry\\Machine\\System\\CurrentControlSet"
84 L"\\Control\\Arbiters\\ReservedResources",
130#if defined(_M_IX86) || defined(_M_AMD64)
145 if ((CpuInfo[1] != 0x68747541) ||
146 (CpuInfo[3] != 0x69746E65) ||
147 (CpuInfo[2] != 0x444D4163))
154 return ((CpuInfo[0] & 0x0FF00F00) == 0x00000F00);
175 DPRINT1(
"PCI: Unable to map ECAM for bus 0x%lx\n", Bus);
213 (Slot.u.bits.DeviceNumber >= 0x18))
310 if (EcamIds != LegacyIds)
312 DPRINT1(
"PCI: ECAM mismatch at %02lx:%02lx.0, read %08lx expected %08lx\n",
353#if defined(_M_IX86) || defined(_M_AMD64)
356 DPRINT1(
"PCI: ECAM window at 0x%I64x for 0x%lx buses\n",
static _Out_opt_ PULONGLONG Start
#define WRITE_REGISTER_USHORT(r, v)
#define READ_REGISTER_USHORT(r)
#define WRITE_REGISTER_ULONG(r, v)
#define READ_REGISTER_ULONG(r)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
_Check_return_ _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS _Out_ UINT * Width
#define NT_SUCCESS(StatCode)
VOID NTAPI PciReadSlotConfig(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
BOOLEAN NTAPI PciOpenKey(IN PWCHAR KeyName, IN HANDLE RootKey, IN ACCESS_MASK DesiredAccess, OUT PHANDLE KeyHandle, OUT PNTSTATUS KeyStatus)
static BOOLEAN NTAPI PciEcamParseWindow(_In_ PKEY_VALUE_PARTIAL_INFORMATION Value)
static PUCHAR PciEcamBusView[PCI_ECAM_BUS_COUNT]
static BOOLEAN PciEcamSkipK8Northbridge
static VOID NTAPI PciEcamDiscardWindow(VOID)
VOID NTAPI PciInitializeEcam(_In_ PPCI_FDO_EXTENSION FdoExtension)
Maps the bus an FDO decodes into the ECAM window and verifies the window the first time a bus with de...
#define PCI_ECAM_BUS_SIZE
#define PCI_ECAM_BUS_COUNT
static ULONG PciEcamWindowBuses
static PUCHAR NTAPI PciEcamMapBus(_In_ ULONG Bus)
static NTSTATUS NTAPI PciEcamQueryWindow(VOID)
BOOLEAN NTAPI PciEcamReadWriteConfig(_In_ ULONG Bus, _In_ PCI_SLOT_NUMBER Slot, _Inout_updates_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length, _In_ BOOLEAN Read)
Performs a configuration space access through the ECAM window.
static ULONGLONG PciEcamWindowStart
static NTSTATUS NTAPI PciEcamVerifyBus(_In_ PPCI_FDO_EXTENSION FdoExtension)
static BOOLEAN PciEcamWindowQueried
static VOID NTAPI PciEcamTransfer(_In_ PUCHAR Function, _Inout_updates_bytes_(Length) PUCHAR Buffer, _In_ ULONG Offset, _In_ ULONG Length, _In_ BOOLEAN Read)
static PUCHAR NTAPI PciEcamFunctionBase(_In_ ULONG Bus, _In_ PCI_SLOT_NUMBER Slot)
#define ExAllocatePoolWithTag(hernya, size, tag)
PPC_QUAL void __cpuid(int CPUInfo[], const int InfoType)
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
#define ExFreePoolWithTag(_P, _T)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define _Inout_updates_bytes_(s)
@ KeyValuePartialInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define REG_RESOURCE_REQUIREMENTS_LIST
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_DEVICE_CONFIGURATION_ERROR
#define CmResourceTypeMemory
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
IO_RESOURCE_DESCRIPTOR Descriptors[1]
union _PCI_SLOT_NUMBER::@4969 u
struct _PCI_SLOT_NUMBER::@4969::@4970 bits
#define STATUS_NO_SUCH_DEVICE
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define CmResourceTypeMemoryLarge
NTKERNELAPI VOID NTAPI WRITE_REGISTER_UCHAR(IN PUCHAR Register, IN UCHAR Value)
NTKERNELAPI UCHAR NTAPI READ_REGISTER_UCHAR(IN PUCHAR Register)
#define PCI_INVALID_VENDORID
#define PCI_EXTENDED_CONFIG_LENGTH
struct _IO_RESOURCE_REQUIREMENTS_LIST * PIO_RESOURCE_REQUIREMENTS_LIST