Skip to content

fast-get: minor fixes#10653

Draft
lyakh wants to merge 3 commits intothesofproject:mainfrom
lyakh:fastget
Draft

fast-get: minor fixes#10653
lyakh wants to merge 3 commits intothesofproject:mainfrom
lyakh:fastget

Conversation

@lyakh
Copy link
Copy Markdown
Collaborator

@lyakh lyakh commented Mar 25, 2026

fix a wrong heap pointer and follow-up on recent changes to remove superfluous code

lyakh added 3 commits March 26, 2026 08:06
Checking number of memory domain partitions in thread's domain to
determine whether it's a userspace thread isn't reliable and is a
layering violation. Instead check the K_USER flag which indicates
exactly that. Also add a missing check when adding a partition for
the newly allocated entry.

Suggested-by: Adrian Warecki <adrian.warecki@intel.com>
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Use the same heap to free the buffer as the one, used to allocate it.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The mdom member of struct sof_fast_get_entry is redundant, remove it.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
@lgirdwood
Copy link
Copy Markdown
Member

@lyakh #10639 merged, can be non draft now ?

Comment thread zephyr/lib/fast-get.c
k_spinlock_key_t key;
void *ret;

key = k_spin_lock(&data->lock);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to switch this from a spinlock to a mutex? Right now the spinlock covers a relatively large scope, including array iteration and memory allocation.

Copy link
Copy Markdown
Collaborator

@softwarecki softwarecki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory domain retrieval for the proxy variant needs fixing. The proxy already stores a pointer to the memory domain in its context structure. The struct k_mem_domain *mdom; in the struct processing_module structure is only needed for APPLICATION variant.

Comment thread zephyr/lib/fast-get.c
} while (!entry);

#if CONFIG_USERSPACE
LOG_DBG("userspace %u part %#zx bytes alloc %p entry %p DRAM %p",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please also modify DBG log num_partitions -> current_is_userspace

@wjablon1
Copy link
Copy Markdown
Contributor

wjablon1 commented Apr 15, 2026

Looks like these aren't just "minor fixes". This condition is crucial:
if (size > FAST_GET_MAX_COPY_SIZE && current_is_userspace) {

Without it I observe partition leaked because the corresponding fast_put is called with mdom=NULL.

@lyakh could you please resume work on this? I already spoke to @softwarecki. He agreed to resolve potential conflicts in his LLEXT changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants