34 BarArray = PciData->u.type0.BaseAddresses;
42 CmDescriptor->
Type = IoDescriptor->
Type;
46 CmDescriptor->
u.
Generic.Start.HighPart = 0;
74 CmDescriptor->
u.
Memory.Start.HighPart = BarArray[
i + 1];
86 Bar = PciData->u.type0.ROMBaseAddress;
105 if (!(CmDescriptor->
u.
Memory.Start.HighPart |
Bar))
109 DPRINT1(
"PCIX - Invalid BAR\n");
114 Context->PdoExtension->SubsystemVendorId = PciData->u.type0.SubVendorID;
115 Context->PdoExtension->SubsystemId = PciData->u.type0.SubSystemID;
134 BarArray = PciData->u.type0.BaseAddresses;
161 if (BarArray[
i] == 0xFE000000)
164 BarArray[
i] = 0xFC000000;
165 DPRINT1(
"PCIX - Adjusted broken S3 requirement from 32MB to 64MB\n");
174 if (BarArray[1] == 0xFC01)
177 if (Current->u.type0.BaseAddresses[1] == 1)
181 DPRINT1(
"PCIX - Ignored Cirrus GD54xx broken IO requirement (400 ports)\n");
186 DPRINT1(
"PCIX - Cirrus GD54xx 400 port IO requirement has a valid setting (%08x)\n",
187 Current->u.type0.BaseAddresses[1]);
190 else if (BarArray[1])
193 DPRINT1(
"PCIX - Warning Cirrus Adapter 101300a0 has unexpected resource requirement (%08x)\n",
211 DPRINT1(
"PCIX - 64-bit BAR %lu has no upper register, decoding it as 32-bit\n",
i);
242 BarArray = PciData->u.type0.BaseAddresses;
330 BarArray = PciData->u.type0.BaseAddresses;
345 DPRINT1(
"PCIX - pdox %p BAR %lu has no range but its decode stays on\n",
357 HasUpperHalf =
FALSE;
373 if (!HasUpperHalf && CmDescriptor->
u.
Generic.Start.HighPart)
375 DPRINT1(
"PCIX - pdox %p BAR %lu cannot hold address %I64x\n",
378 CmDescriptor->
u.
Generic.Start.QuadPart);
382 BarArray[
i] = (
Bar & ~BarMask) | (CmDescriptor->
u.
Generic.Start.LowPart & BarMask);
386 BarArray[
i] = CmDescriptor->
u.
Generic.Start.HighPart;
394 PciData->u.type0.ROMBaseAddress = 0;
398 Bar = PciData->u.type0.ROMBaseAddress & ~PCI_ADDRESS_ROM_ADDRESS_MASK;
399 PciData->u.type0.ROMBaseAddress =
Bar |
400 (CmDescriptor->
u.
Generic.Start.LowPart &
VOID NTAPI Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
VOID NTAPI Device_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
NTSTATUS NTAPI Device_ChangeResourceSettings(_In_ PPCI_PDO_EXTENSION PdoExtension, _Inout_ PPCI_COMMON_HEADER PciData)
Puts the ranges assigned to a function into its BARs and ROM BAR.
VOID NTAPI Device_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Device_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
BOOLEAN NTAPI PciIsRequirementDescriptor(_In_ PIO_RESOURCE_DESCRIPTOR Limit)
Tells whether a discovered limit asks the arbiter for a range.
BOOLEAN NTAPI PciCreateIoDescriptorFromBarLimit(_Out_ PIO_RESOURCE_DESCRIPTOR ResourceDescriptor, _In_ ULONG Bar, _In_ ULONG NextBar, _In_ BOOLEAN Rom)
Builds the requirement of a BAR from the value it reads back after all ones were written to it.
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define UNREFERENCED_PARAMETER(P)
#define CmResourceTypeNull
#define CmResourceTypeMemory
#define CmResourceTypePort
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@499 Memory
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@495 Generic
struct _IO_RESOURCE_DESCRIPTOR::@2498::@2503 Generic
union _IO_RESOURCE_DESCRIPTOR::@2498 u
#define STATUS_INVALID_PARAMETER
#define CmResourceTypeMemoryLarge
#define PCI_ADDRESS_IO_ADDRESS_MASK
#define PCI_TYPE0_ADDRESSES
#define PCI_ENABLE_IO_SPACE
#define PCI_CLASS_MASS_STORAGE_CTLR
#define PCI_ADDRESS_IO_SPACE
#define PCI_SUBCLASS_MSC_IDE_CTLR
#define PCI_ENABLE_MEMORY_SPACE
#define PCI_ADDRESS_ROM_ADDRESS_MASK
#define PCI_ADDRESS_MEMORY_ADDRESS_MASK
#define PCI_ROMADDRESS_ENABLED
#define PCI_SUBCLASS_VID_VGA_CTLR
#define PCI_ADDRESS_MEMORY_TYPE_MASK
#define PCI_SUBCLASS_PRE_20_VGA
#define PCI_CLASS_DISPLAY_CTLR
_In_ LONG _In_ LONG Limit