Add Imprecise flag for memory access fault

KFD may not be  able to provide the precise VM fault address and status.
This flag will indicate whether the event data has the fault details

Change-Id: I15ffd5c25f555003c6450cc0700efb769418f76b
Αυτή η υποβολή περιλαμβάνεται σε:
shaoyunl
2016-03-09 14:30:12 -05:00
υποβλήθηκε από Shaoyun Liu
γονέας 0ed29f5191
υποβολή 79077811f5
3 αρχεία άλλαξαν με 4 προσθήκες και 2 διαγραφές
+2 -1
Προβολή Αρχείου
@@ -781,7 +781,8 @@ typedef struct _HsaAccessAttributeFailure
unsigned int NoExecute : 1; // Execute access to a page marked NX
unsigned int GpuAccess : 1; // Host access only
unsigned int ECC : 1; // ECC failure (if supported by HW)
unsigned int Reserved : 27; // must be 0
unsigned int Imprecise : 1; // Can't determine the exact fault address
unsigned int Reserved : 26; // must be 0
} HsaAccessAttributeFailure;
// data associated with HSA_EVENTID_MEMORY
@@ -222,7 +222,7 @@ struct kfd_memory_exception_failure {
bool NotPresent; /* Page not present or supervisor privilege */
bool ReadOnly; /* Write access to a read-only page */
bool NoExecute; /* Execute access to a page marked NX */
bool pad;
bool imprecise; /* Can't determine the exact fault address */
};
/* memory exception data*/
+1
Προβολή Αρχείου
@@ -278,6 +278,7 @@ hsaKmtWaitOnMultipleEvents(
Events[i]->EventData.EventData.MemoryAccessFault.Failure.NotPresent = event_data[i].memory_exception_data.failure.NotPresent;
Events[i]->EventData.EventData.MemoryAccessFault.Failure.ReadOnly = event_data[i].memory_exception_data.failure.ReadOnly;
Events[i]->EventData.EventData.MemoryAccessFault.Failure.NoExecute = event_data[i].memory_exception_data.failure.NoExecute;
Events[i]->EventData.EventData.MemoryAccessFault.Failure.Imprecise = event_data[i].memory_exception_data.failure.imprecise;
Events[i]->EventData.EventData.MemoryAccessFault.Flags = HSA_EVENTID_MEMORY_FATAL_PROCESS;
}
}