On 8/10/26 18:13, Junrui Luo via B4 Relay wrote:
> From: Junrui Luo <moonafterrain(a)outlook.com>
>
> amdgpu_userq_ensure_ev_fence() loops until the eviction fence is both
> present and unsignaled. The only producer of such a fence is
> amdgpu_evf_mgr_rearm(), which runs as the very last step of
> amdgpu_userq_vm_validate(). Every failure point ahead of it - the
> kzalloc() in the rearm itself, amdgpu_hmm_range_alloc(), the
> ttm_bo_validate() calls, the GART binding of the wptr BOs - makes
> amdgpu_userq_restore_worker() give up with only a drm_file_err().
> Nothing propagates that back, so the waiting thread reschedules the
> worker and flushes it again, forever.
>
> Both flush_delayed_work() and mutex_lock() sleep in
> TASK_UNINTERRUPTIBLE, so the looping task cannot be killed and the OOM
> killer cannot reclaim it. An unprivileged render node client
> reaches this from both AMDGPU_USERQ and AMDGPU_USERQ_SIGNAL.
>
> The eviction fence sequence number is already bumped by every
> successful rearm, so use it as the loop's progress condition: if a
> completed flush of the restore worker did not move it then no rearm
> happened and retrying cannot help. Return -ENOMEM in that case and
> let both callers report it to userspace.
>
> Fixes: a242a3e4b5be ("drm/amdgpu: simplify eviction fence suspend/resume")
> Reported-by: Yuhao Jiang <danisjiang(a)gmail.com>
> Assisted-by: Claude:claude-opus-5
> Cc: stable(a)vger.kernel.org
> Signed-off-by: Junrui Luo <moonafterrain(a)outlook.com>
Absolutely clear NAK!
This functions needs to loop forever should the rearm worker fails to re-arm the fence.
The only thing which could potentially get out of that is to kill the process or maybe that the eviction fence is signaled with an error.
Regards,
Christian.
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 21 +++++++++++++++++++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h | 4 ++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 10 +++++++++-
> 3 files changed, 30 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> index bec107216811..208b53ae5bd1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
> @@ -448,12 +448,16 @@ static void amdgpu_userq_cleanup(struct amdgpu_usermode_queue *queue)
> * Ensures that a valid and not yet signaled eviction fence is attached to the
> * usermode queue before any queue operations proceed. If it is signalled, then
> * rearm a new eviction fence.
> + *
> + * Returns 0 with @uq_mgr->userq_mutex held, or -ENOMEM with the mutex released
> + * when the restore worker could not rearm the fence.
> */
> -void
> +int
> amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *uq_mgr,
> struct amdgpu_eviction_fence_mgr *evf_mgr)
> {
> struct dma_fence *ev_fence;
> + int seq, prev_seq = -1;
>
> retry:
> /* Flush any pending resume work to create ev_fence */
> @@ -463,7 +467,16 @@ amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *uq_mgr,
> ev_fence = amdgpu_evf_mgr_get_fence(evf_mgr);
> if (dma_fence_is_signaled(ev_fence)) {
> dma_fence_put(ev_fence);
> + seq = atomic_read(&evf_mgr->ev_fence_seq);
> mutex_unlock(&uq_mgr->userq_mutex);
> + /*
> + * The sequence number is only bumped by a successful rearm, so
> + * if the flush above ran the worker without moving it then the
> + * restore failed and looping again would never terminate.
> + */
> + if (seq == prev_seq)
> + return -ENOMEM;
> + prev_seq = seq;
> /*
> * Looks like there was no pending resume work,
> * add one now to create a valid eviction fence
> @@ -472,6 +485,8 @@ amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *uq_mgr,
> goto retry;
> }
> dma_fence_put(ev_fence);
> +
> + return 0;
> }
>
>
> @@ -747,7 +762,9 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
> if (r)
> goto clean_mqd;
>
> - amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
> + r = amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
> + if (r)
> + goto erase_doorbell;
>
> /* don't map the queue if scheduling is halted */
> if (!adev->userq_halt_for_enforce_isolation ||
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
> index 6412a7f7b6ef..c35909bf7ceb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h
> @@ -164,8 +164,8 @@ void amdgpu_userq_mgr_fini(struct amdgpu_userq_mgr *userq_mgr);
>
> void amdgpu_userq_evict(struct amdgpu_userq_mgr *uq_mgr);
>
> -void amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *userq_mgr,
> - struct amdgpu_eviction_fence_mgr *evf_mgr);
> +int amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *userq_mgr,
> + struct amdgpu_eviction_fence_mgr *evf_mgr);
>
> u32 amdgpu_userq_get_supported_ip_mask(struct amdgpu_device *adev);
> bool amdgpu_userq_enabled(struct drm_device *dev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> index 7e80442ec3e5..1c287ce59736 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> @@ -523,7 +523,15 @@ int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,
> goto put_queue;
>
> /* We are here means UQ is active, make sure the eviction fence is valid */
> - amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
> + r = amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
> + if (r) {
> + /* The fence is not initialized yet, so unwind it by hand */
> + amdgpu_userq_fence_put_fence_drv_array(fence);
> + amdgpu_userq_fence_driver_put(fence->fence_drv);
> + kvfree(fence->fence_drv_array);
> + kfree(fence);
> + goto put_queue;
> + }
>
> /* Create the new fence */
> amdgpu_userq_fence_init(queue, fence, wptr);
>
In the vast universe of digital entertainment, sometimes the most profound joy comes from the simplest experiences. Forget hyper-realistic graphics or intricate narratives; sometimes all it takes is a charming little game that captures the essence of fun. One such delightful gem is Doodle Baseball, a browser-based delight that offers a surprisingly engaging and addictive take on America's favorite pastime. Whether you're a seasoned gamer or just looking for a quick and satisfying diversion, understanding how to play and truly experience Doodle Baseball can unlock a surprisingly deep well of enjoyment.
https://doodlebaseballgame.com
Introduction: The Allure of Simplicity
Doodle Baseball isn't trying to be the next big sports simulation. Instead, it leans into its minimalist aesthetic and straightforward gameplay to deliver an instant dose of fun. Imagine a charming, hand-drawn world where baseball takes center stage, controlled with nothing more than a click or a tap. This accessibility is its greatest strength, making it a perfect game for quick breaks, casual evenings, or even introducing younger players to the basics of baseball. The beauty lies in its unpretentious nature – it's just pure, unadulterated baseball action, doodle-style.
Tips for Becoming a Doodle Baseball Legend
While the game is easy to pick up, mastering it requires a bit of practice and an understanding of its subtle mechanics. Here are a few tips to help you consistently hit those dingers:
Focus on Timing, Not Power: Unlike some games where holding down a button determines power, Doodle Baseball is all about precise timing. Aim to click just as the ball enters the center of the target zone. A perfectly timed click will send the ball soaring.
Anticipate the Pitch: Pay close attention to the pitcher's wind-up and the initial trajectory of the ball. With practice, you'll start to recognize the tells for different pitch types. A curveball, for instance, will often start higher and then drop, while a fastball will be more direct.
Don't Be Afraid to Miss: Early on, you might swing and miss a lot. That's perfectly normal! The game has a forgiving learning curve. Each swing, successful or not, helps you calibrate your timing and improve your reaction speed.
Learn from Your Outs: When you strike out, take a moment to understand why. Did you swing too early or too late? Were you thrown off by a specific type of pitch? This self-correction is key to improving.
Take a Breather (and Play Again!): If you find yourself getting frustrated, sometimes the best thing to do is take a quick break. Come back with fresh eyes, and you might find your timing is much better. The beauty of Doodle Baseball is that it’s always there, ready for another quick game.
Conclusion: More Than Just a Game
Doodle Baseball, in its charming simplicity, reminds us that gaming doesn't always need to be complex to be enjoyable. It's a testament to good design, where the core mechanics are so solid that they provide endless replayability. Whether you're aiming for a personal best score, challenging a friend to beat your high score, or simply looking for a few minutes of delightful escapism, Doodle Baseball delivers. So step up to the plate, take a swing, and discover the satisfying joy of hitting a virtual home run in this wonderfully unpretentious game. It's an experience that proves sometimes, less really is more.
Ever feel like you’ve played every type of game out there? From sprawling open-world epics to fast-paced competitive shooters, the gaming landscape is vast. But what if I told you there’s a game that offers a distinctly unique and often contemplative experience, one that encourages exploration, problem-solving, and a touch of the uncanny? Enter Repo, an online game that transcends traditional genres. If you're looking for something that challenges your perception and invites you to unravel its mysteries at your own pace, then buckle up.
https://repoonlinegame.com
What is Repo? A Glimpse into its Core
At its heart, Repo is less of a "game" in the conventional sense and more of an interactive narrative or an atmospheric exploration experience. It's an abstract journey through interconnected digital spaces, often presenting you with puzzles, cryptic clues, and a sense of pervasive intrigue. There isn't a clear "win" condition or a high score to chase. Instead, the reward lies in discovery, in piecing together its fragmented story, and in the often-surreal aesthetics it presents. Think of it as a digital labyrinth designed to make you think, ponder, and perhaps even question.
Embarking on Your Repo Journey: Gameplay and Mechanics
Playing Repo is a refreshing departure from button-mashing and rapid reflexes. Your primary tools are observation, deduction, and a willingness to experiment. The game often presents you with stark, minimalist environments, sometimes with subtle interactive elements. You'll click on objects, manipulate sliders, or input sequences based on visual cues. The "puzzles" aren't always explicit; sometimes, the puzzle is understanding what you're even supposed to do. For a taste of this unique world, you can begin your journey at Repo.
There’s a beautiful ambiguity to Repo’s gameplay. You’re rarely told what to do. Instead, the game whispers hints through its visual design, soundscapes, and the gradual emergence of its underlying narrative. It’s an exercise in patience and lateral thinking. Expect to get stuck, to wander, and then to experience that satisfying "aha!" moment when a connection finally clicks. The atmosphere is often melancholic, sometimes unsettling, but always captivating.
Tips for a More Rewarding Experience
To truly appreciate Repo, approach it with an open mind and a relaxed pace. Don't rush. Take your time to observe every detail, listen to the subtle audio cues, and absorb the atmosphere. Many players find it helpful to keep a notepad nearby to jot down clues, symbols, or even just thoughts and feelings evoked by the game. Collaboration can also be key – discussing theories or obscure findings with other players on forums can often illuminate paths you might not have considered. Remember, there's no single "right" way to play; the beauty is in charting your own course through its enigmatic landscapes.
Conclusion: More Than Just a Game
Repo offers a unique and often profound gaming experience. It’s a testament to the power of interactive art, demonstrating how digital spaces can evoke strong emotions and challenge our perceptions. It’s not for everyone – those seeking instant gratification or clear objectives might find it frustrating. But for players who appreciate ambiguity, atmospheric storytelling, and the joy of unraveling a well-crafted mystery, Repo is an absolute gem. So, if you're ready for an adventure that engages your mind in a truly different way, give Repo a try. You might just discover a new favorite. You can find more information and begin playing at Repo.
On Wed, Aug 5, 2026 at 5:01 PM Philipp Stanner <phasta(a)kernel.org> wrote:
>
> rust: types: implement ForeignOwnable for ARef<T>
> rust: sync: Add abstraction for rcu_barrier()
> rust: error: add remaining error codes
Applied (these three) to `rust-next` -- thanks everyone!
Please note that your Signed-off-by is required when sending a patch
from someone else:
https://docs.kernel.org/process/submitting-patches.html#sign-your-work-the-…
I added it here on apply for you -- please let me know if that is not
what you intended!
[ Formatted comments. Added the submitter's Signed-off-by tag. - Miguel ]
[ Relaxed `'static` bound and added `#[inline]` as discussed. Added
the submitter's Signed-off-by tag. - Miguel ]
[ Formatted documentation. Sorted tags. - Miguel ]
Thanks!
Cheers,
Miguel
Ever find yourself needing a quick mental refresh, a game that’s easy to pick up but surprisingly satisfying? Look no further than the delightful world of slicing games. These titles, often characterized by their intuitive controls and focus on precision, offer a uniquely calming and engaging experience. Today, we're going to dive into one such gem: Slice Master.
https://slicemasterfree.com
Introduction to the World of Slicing
Slicing games, at their core, are about accuracy and timing. Whether you’re cutting fruit, bamboo, or even abstract shapes, the goal remains the same: achieve the perfect cut. This genre taps into a primal satisfaction, the joy of a job well done with a clean, precise motion. They're often visually appealing, with satisfying sound effects that amplify the sense of accomplishment. Slice Master embodies these qualities, providing a straightforward yet addictive experience that can brighten up any spare moment.
Gameplay: The Art of the Cut in Slice Master
Playing Slice Master is refreshingly simple. Objects, usually fruits or vegetables, appear on your screen, and your mission is to slice them into as many pieces as possible with a single swipe of your finger or mouse. The more precise your cut, the higher your score. Sounds easy, right? Well, that's where the nuance comes in.
As you progress, the game introduces various challenges. You might encounter bombs mixed in with the fruits, requiring you to carefully avoid them. Sometimes, the objects move faster, or they appear in more complex arrangements, demanding quicker reflexes and smarter slicing angles. The beauty of Slice Master lies in its escalating difficulty, which keeps you engaged without ever feeling overwhelming. It’s a testament to good game design – easy to learn, difficult to master. Each successful multi-slice feels incredibly rewarding, prompting that satisfying "just one more go" feeling.
Tips for Becoming a Slicing Sensei
To truly excel at Slice Master, consider these friendly tips:
Observe and Anticipate: Before you swipe, take a split second to observe the trajectory and grouping of the objects. Planning your cut beforehand can lead to more multi-slices.
The Power of the Arc: Don't just swipe in a straight line. Experiment with curved or angled swipes to maximize your chances of hitting multiple items, especially when they're spread out.
Prioritize Multi-Slices: While avoiding bombs is crucial, always aim for those satisfying multi-slices. They’re the key to high scores and a true sense of accomplishment.
Practice Makes Perfect: Like any skill, your slicing prowess will improve with practice. Don't get discouraged by a few missed cuts; learn from them and refine your technique.
Relax and Enjoy: Ultimately, Slice Master is meant to be a fun and relaxing experience. Don't stress too much about perfect scores. Enjoy the satisfying swish and the vibrant visuals.
Conclusion: A Slice of Pure Enjoyment
Slice Master, and games like it, offer a fantastic way to unwind and engage your reflexes and precision. They prove that games don’t need complex narratives or intricate mechanics to be enjoyable. Sometimes, the most satisfying experiences come from the simplest, most intuitive actions. So, if you're looking for a delightful distraction that's easy to jump into and surprisingly rewarding, give Slice Master a try. You might just discover your inner ninja.
Where can I buy a US visa? Buy a US resident permit (WeChat ID: Scottbowers44)
Buy a Canadian resident permit; we can help you obtain a permanent resident permit.
Apply for a US visa through us. WhatsApp +1 (775) 480-1590
Buy US visas, US tourist visas, US student visas, US work visas.
Get a Canadian visa; get travel documents at affordable prices. Sell US visas; sell German visas.
How to buy a Canadian visa?
How to buy a US visa online? Apply for a US visa.
Buy a B1 visa; buy a B2 visa.
WhatsApp +1 (775) 480-1590
(Email: authenticnotes5(a)gmail.com)
WeChat ID: Scottbowers44)
Website: https://buyrealcurrency.com/https://buyrealcurrency.com/
How much does a US visa cost?
Buy a US Tourist Visa (Visitor Visa)
Buy a Business Visa
Buy a Work Visa
Buy a Student Visa
Buy a Transit Visa
Buy a Permanent Resident Visa or Immigrant Visa
Get an F-1, F-2, F-3, and F-4 Visa
Get a B-1, B-2, and B-2 Visa?
How to Apply for or Renew a US Tourist Visa
Apply for an Immigrant Visa
Get an Australian Visa, Buy a German Visa, Buy a UK Visa, Get a Spanish Visa, Sell a Maltese Visa
Sell an Italian Visa, Sell a Russian Visa
We focus on helping people obtain visas without going through visa interviews and long waits.
WhatsApp +1 (775) 480-1590
(Email: authenticnotes5(a)gmail.com)
WeChat ID: Scottbowers44)
Website: https://buyrealcurrency.com/https://buyrealcurrency.com/
Acquista passaporti autentici e falsi online, WhatsApp: +1 (775) 480-1590 Acquista passaporti online, acquista patenti di guida, acquista carte d'identità online, acquista Green Card, acquista permessi di soggiorno, acquista certificati IELTS, acquista permessi di lavoro, acquista la cittadinanza, acquista permessi di soggiorno canadesi, richiedi certificati di cittadinanza canadese, acquista carte d'identità canadesi, acquista carte d'identità "novelty" (fac-simile), acquista documenti d'identità autentici.
https://globaltraveldocs.com/
WhatsApp: +1 (775) 480-1590
ID WeChat: Scottbowers44 )
(Email: authenticnotes5(a)gmail.com)
https://counterfeitdocsforsale.com/ Acquista dollari USA (USD) falsi, acquista yuan cinesi (CNY) falsi, acquista RMB falsi, acquista dollari canadesi (CAD) falsi, acquista dollari australiani (AUD) falsi, acquista sterline britanniche (GBP) false, acquista euro (EUR) falsi, acquista dollari di Hong Kong (HKD) falsi. Acquista banconote false in USD/AUD/CAD/CNY/EUR, acquista banconote false in euro, dollari australiani, dollari canadesi, dollari USA, RMB online. ID WeChat: Scottbowers44 )
https://rushmynewpassport.com/ Offriamo ogni tipo di visto, documento di viaggio e passaporto ai migliori prezzi e con una qualità eccezionale. Gestiamo passaporti per piccoli stati e passaporti multinazionali, offriamo assistenza per l'ingresso e l'uscita dal Sud-est asiatico, attivazione passaporti, naturalizzazione accelerata e pianificazione di una seconda identità, offrendoti un'alternativa concreta.
Email: authenticnotes5(a)gmail.com
WhatsApp: +1 (775) 480-1590
https://globaltraveldocs.com/ Acquista passaporti online (Email: authenticnotes5(a)gmail.com) acquista passaporti USA, passaporti cinesi, passaporti di Hong Kong, passaporti di Taiwan, passaporti diplomatici, acquista documenti di viaggio della Repubblica Popolare Cinese (RPC) https://globaltraveldocs.com/
WhatsApp: +1 (775) 480-1590