feature: Complete madvise for System Allocator

Related-To: NEO-13715

Provides implmentation of getAtomicAccessAttribute using system
allocator.
Completes the implementation of the madvise feature using the
new IOCTLs in xe_drm header.

Signed-off-by: Chandio, Bibrak Qamar <bibrak.qamar.chandio@intel.com>
This commit is contained in:
Chandio, Bibrak Qamar
2025-09-16 22:57:54 +00:00
committed by Compute-Runtime-Automation
parent 95130b7256
commit cf21cbc910
22 changed files with 920 additions and 133 deletions

View File

@@ -129,10 +129,12 @@ class IoctlHelper {
bool userInterrupt, uint32_t externalInterruptId, GraphicsAllocation *allocForInterruptWait) = 0;
virtual uint32_t getAtomicAdvise(bool isNonAtomic) = 0;
virtual uint32_t getAtomicAccess(AtomicAccessMode mode) = 0;
virtual uint64_t getPreferredLocationArgs(MemAdvise memAdviseOp) = 0;
virtual uint32_t getPreferredLocationAdvise() = 0;
virtual std::optional<MemoryClassInstance> getPreferredLocationRegion(PreferredLocation memoryLocation, uint32_t memoryInstance) = 0;
virtual bool setVmBoAdvise(int32_t handle, uint32_t attribute, void *region) = 0;
virtual bool setVmSharedSystemMemAdvise(uint64_t handle, const size_t size, const uint32_t attribute, const uint64_t param, const std::vector<uint32_t> &vmIds) { return true; }
virtual AtomicAccessMode getVmSharedSystemAtomicAttribute(uint64_t handle, const size_t size, const uint32_t vmId) { return AtomicAccessMode::none; }
virtual bool setVmBoAdviseForChunking(int32_t handle, uint64_t start, uint64_t length, uint32_t attribute, void *region) = 0;
virtual bool setVmPrefetch(uint64_t start, uint64_t length, uint32_t region, uint32_t vmId) = 0;
virtual bool setGemTiling(void *setTiling) = 0;
@@ -325,6 +327,7 @@ class IoctlHelperUpstream : public IoctlHelperI915 {
bool userInterrupt, uint32_t externalInterruptId, GraphicsAllocation *allocForInterruptWait) override;
uint32_t getAtomicAdvise(bool isNonAtomic) override;
uint32_t getAtomicAccess(AtomicAccessMode mode) override;
uint64_t getPreferredLocationArgs(MemAdvise memAdviseOp) override;
uint32_t getPreferredLocationAdvise() override;
std::optional<MemoryClassInstance> getPreferredLocationRegion(PreferredLocation memoryLocation, uint32_t memoryInstance) override;
bool setVmBoAdvise(int32_t handle, uint32_t attribute, void *region) override;
@@ -400,6 +403,7 @@ class IoctlHelperPrelim20 : public IoctlHelperI915 {
bool userInterrupt, uint32_t externalInterruptId, GraphicsAllocation *allocForInterruptWait) override;
uint32_t getAtomicAdvise(bool isNonAtomic) override;
uint32_t getAtomicAccess(AtomicAccessMode mode) override;
uint64_t getPreferredLocationArgs(MemAdvise memAdviseOp) override;
uint32_t getPreferredLocationAdvise() override;
std::optional<MemoryClassInstance> getPreferredLocationRegion(PreferredLocation memoryLocation, uint32_t memoryInstance) override;
bool setVmBoAdvise(int32_t handle, uint32_t attribute, void *region) override;