SWDEV-485866 - Return OOM if stream creation fails due to insufficient memory.
Change-Id: I4e57ecc81921bde274bb6a4e0890f0fc6a17955a
Šī revīzija ir iekļauta:
revīziju iesūtīja
Jaydeepkumar Patel
vecāks
b977101893
revīzija
5ccc140e1b
@@ -36,6 +36,10 @@ hip::Stream* Device::NullStream(bool wait) {
|
||||
amd::ScopedLock lock(lock_);
|
||||
if (null_stream_ == nullptr) {
|
||||
null_stream_ = new Stream(this, Stream::Priority::Normal, 0, true);
|
||||
// Stream creation might be failed from rcor and in that case, vdev is null.
|
||||
if (null_stream_->vdev() == nullptr) {
|
||||
Stream::Destroy(null_stream_);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (null_stream_ == nullptr) {
|
||||
|
||||
@@ -3328,6 +3328,7 @@ hipError_t ihipMemset(void* dst, int64_t value, size_t valueSize, size_t sizeByt
|
||||
}
|
||||
std::vector<amd::Command*> commands;
|
||||
hip::Stream* hip_stream = hip::getStream(stream);
|
||||
if (hip_stream == nullptr) { return hipErrorOutOfMemory; }
|
||||
hip_error = ihipMemsetCommand(commands, dst, value, valueSize, sizeBytes, hip_stream);
|
||||
if (hip_error != hipSuccess) {
|
||||
break;
|
||||
|
||||
@@ -75,6 +75,7 @@ bool Stream::Create() {
|
||||
void Stream::Destroy(hip::Stream* stream) {
|
||||
stream->device_->RemoveStream(stream);
|
||||
stream->release();
|
||||
stream = nullptr;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
|
||||
@@ -1461,9 +1461,11 @@ bool VirtualGPU::initPool(size_t kernarg_pool_size) {
|
||||
roc_device_.info().largeBar_) {
|
||||
kernarg_pool_base_ =
|
||||
reinterpret_cast<address>(roc_device_.deviceLocalAlloc(kernarg_pool_size_));
|
||||
// @note Workaround first access penalty.
|
||||
// KFD may update CPU page tables on the first CPU access
|
||||
*kernarg_pool_base_ = 0;
|
||||
if (kernarg_pool_base_ != nullptr) {
|
||||
// @note Workaround first access penalty.
|
||||
// KFD may update CPU page tables on the first CPU access
|
||||
*kernarg_pool_base_ = 0;
|
||||
}
|
||||
} else {
|
||||
kernarg_pool_base_ = reinterpret_cast<address>(roc_device_.hostAlloc(kernarg_pool_size_, 0,
|
||||
Device::MemorySegment::kKernArg));
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user