mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 01:04:57 +08:00
AUB CSR: Ensured PTE bits be set correctly for Global GTT
This commit fixes the issue with setting reserved bits in PTE for GGTT. Change-Id: I08582e20914419a3363c9e61085dcf03ba355a61
This commit is contained in:
committed by
sys_ocldev
parent
3e65a39c62
commit
fb10f666e9
@@ -25,6 +25,5 @@
|
||||
|
||||
struct AubGTTData {
|
||||
bool present;
|
||||
bool writable;
|
||||
bool userSupervisor;
|
||||
bool localMemory;
|
||||
};
|
||||
|
||||
@@ -79,7 +79,18 @@ union IAPageTableEntry {
|
||||
uint64_t uiData;
|
||||
};
|
||||
|
||||
typedef IAPageTableEntry MiGttEntry;
|
||||
union MiGttEntry {
|
||||
struct
|
||||
{
|
||||
uint64_t Present : 1; //[0]
|
||||
uint64_t LocalMemory : 1; //[1]
|
||||
uint64_t FunctionNumber : 10; //[11:2]
|
||||
uint64_t PhysicalAddress : 35; //[46:12]
|
||||
uint64_t Ignored : 17; //[63:47]
|
||||
} pageConfig;
|
||||
uint32_t dwordData[2];
|
||||
uint64_t uiData;
|
||||
};
|
||||
|
||||
// Use the latest DeviceValues enumerations available
|
||||
typedef CmdServicesMemTraceVersion::DeviceValues DeviceValues;
|
||||
@@ -282,7 +293,7 @@ struct AubDump : public TypeSelector<AubPageTableHelper32<TraitsIn>, AubPageTabl
|
||||
static uint64_t reserveAddressGGTT(Stream &stream, uint32_t addr, size_t size, uint64_t physStart, AubGTTData data);
|
||||
static uint64_t reserveAddressGGTT(Stream &stream, const void *memory, size_t size, uint64_t physStart, AubGTTData data);
|
||||
static void reserveAddressGGTTAndWriteMmeory(Stream &stream, uintptr_t gfxAddress, const void *memory, uint64_t physAddress, size_t size, size_t offset, uint64_t additionalBits);
|
||||
static void setGttEntry(IAPageTableEntry &entry, uint64_t address, AubGTTData data);
|
||||
static void setGttEntry(MiGttEntry &entry, uint64_t address, AubGTTData data);
|
||||
|
||||
private:
|
||||
static uint64_t reserveAddress(Stream &stream, uint32_t addr, size_t size, unsigned int addressSpace /* = AddressSpaceValues::TraceGttEntry*/, uint64_t physStart, AubGTTData data);
|
||||
|
||||
@@ -141,12 +141,11 @@ void AubDump<Traits>::reserveAddressGGTTAndWriteMmeory(typename Traits::Stream &
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
void AubDump<Traits>::setGttEntry(IAPageTableEntry &entry, uint64_t address, AubGTTData data) {
|
||||
void AubDump<Traits>::setGttEntry(MiGttEntry &entry, uint64_t address, AubGTTData data) {
|
||||
entry.uiData = 0;
|
||||
entry.pageConfig.PhysicalAddress = address / 4096;
|
||||
entry.pageConfig.Present = data.present;
|
||||
entry.pageConfig.Writable = data.writable;
|
||||
entry.pageConfig.UserSupervisor = data.userSupervisor;
|
||||
entry.pageConfig.LocalMemory = data.localMemory;
|
||||
}
|
||||
|
||||
template <typename Traits>
|
||||
|
||||
Reference in New Issue
Block a user