From b647ae82f524ed5e607ac39286ed50ee0b90d023 Mon Sep 17 00:00:00 2001 From: xdtbynd <231153518+xdtbynd@users.noreply.github.com> Date: Thu, 27 Aug 2026 19:44:45 +0800 Subject: [PATCH] [NPU][Bugfix] Fix OOB gather in decode KV allocation when free pool is tight (#35727) --- python/sglang/srt/hardware_backend/npu/allocator_npu.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/sglang/srt/hardware_backend/npu/allocator_npu.py b/python/sglang/srt/hardware_backend/npu/allocator_npu.py index 32ec7ffc8..e59dbf6a0 100644 --- a/python/sglang/srt/hardware_backend/npu/allocator_npu.py +++ b/python/sglang/srt/hardware_backend/npu/allocator_npu.py @@ -126,6 +126,7 @@ class NPUPagedTokenToKVPoolAllocator(PagedTokenToKVPoolAllocator): if num_new_pages == 0: out_indices = last_loc + 1 else: + start_new_pages = start_new_pages.clamp(max=num_new_pages - 1) out_indices = (last_loc + 1) * (1 - need_new_pages) + self.free_pages[ start_new_pages ] * self.page_size * need_new_pages