X0DyKxQKioTYPOHcW9gdV5fhSz5tEv+ipqt4kIgWqBgzK8ePtDTqRM qZq457g1/SXSoSQi4jN+gsneqvlTJdzaEu1bJP0iv6ViVf15+qHuY5iojCz8fa0= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-DKIM: signer='kernel.org' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: -1.2 (-) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (-1.2 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.234.253.10 listed in list.dnswl.org] -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender SpamTally: Final spam score: -11 On 2/1/26 19:16, Jens Axboe wrote: > On 2/1/26 10:46 AM, David Hildenbrand (arm) wrote: >> On 1/29/26 23:11, Gabriel Krisman Bertazi wrote: >>> Hi, >>> >>> There's been a few requests over time for supporting mmap(2) over >>> io_uring. The reasoning are twofold: 1) serving as base for batching >>> multiple mappings in a single operation 2) supporting mmap of fixed >>> files. >>> >>> Since mmap can operate on either anonymous memory and file descriptors, >>> patch 1 adds support for optional fds in io_uring commands. Patch 2 >>> implements the mmap operation itself. >>> >>> Note this patchset doesn't do any kind of smarter batching in MM. While >>> we can potentially do some interesting optimizations already, like >>> holding the MM write lock instead of reacquiring it for each mapping, I >>> wanted to focus on the API discussion first. This is left as future >>> work. >>> >>> liburing support, including testcases, will be sent shortly to the list, >>> but can also be found at: >> >> Just a general question: why do we unlock each syscall individually, >> and not in some intelligent way, all syscalls at once? :) > > The hard part isn't enabling all syscalls at once, that could be > trivially done with an IORING_OP_SYSCALL and the SQE carries arg0..argN. > And for any nonblocking/simple syscall, that would Just Work. Right, that's what I had in mind. > The > challenge is for syscalls that block - the whole point of io_uring is > that you should be able to do nonblock issues with sane retries. The > futex series I did some time back is a good example of that - you modify > the existing syscall to expose the waitqueue mechanism, which you can > then use to wait in an async way, and get a callback when some action > needs to be taken. > > If you just allow blocking, then you're blocking the entire io_uring > issue pipeline. Which was exactly my main complaint on this patchset, > see the review reply to patch 2. Makes sense. I was wondering whether that could be optimized internally in the stream of IORING_OP_SYSCALL. But likely that would make it more tricky to optimize. The patch set says "serving as base for batching multiple mappings in a single operation", and I was wondering, why one wouldn't just also batch with mremap/munmap/ etc. in the future. (BUT I am also skeptical whether holding the mmap lock in write mode longer instead of repeatedly grabbing it, allowing other operations that need it in read mode etc to make progress, is actually preferrable) > >> I assume supporting arbitrary syscalls could be rather hard (or am I >> wrong? :) ). > > See above - it's both trivially easy if you ignore the problems, or > somewhat harder as you'd need to refactor the underlying bits of that > particular syscall first. For some of them, that's hard. Traditionally > syscalls have been fully sync, they will just block and prevent the task > from returning back to userspace until they are done. syscalls with > io_uring is more involved as we simply cannot allow that kind of > blocking. Thanks for pointing that out. -- Cheers David From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id QPzYA6pqgGmGJTYAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:13:14 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:13:14 +0000 Received: from tor.lore.kernel.org ([172.105.105.114]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmpzc-0000000F2WF-3fbA for hi@josie.lol; Mon, 02 Feb 2026 09:13:14 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id 07C8C301385F for ; Mon, 2 Feb 2026 09:13:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 311B13563C9; Mon, 2 Feb 2026 09:13:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="XlDSALWR" X-Original-To: stable@vger.kernel.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCB731EDA2B for ; Mon, 2 Feb 2026 09:13:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770023591; cv=none; b=qdxMmkmEzdM6vAp1ItNC3zFz4/6utEDFQIlSbrqZ9Z0d7eLO+giiBCJWRNSJYXZ9VV0FrwEtuK1ognyHuL3mmXbVpVXkTB71TO/s+eUlZgT3NI3wE9blN2hV7JnVc+CSho7TffqQQnjXe339hfqk/cs41rp7zeuoqAwI8NA01uQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770023591; c=relaxed/simple; bh=vXOTW8XU61f4CbGPL3gcpzwdMcHgirqYXw8QOj4FO6Q=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=QPes7DorKJQxEP7dHfhZfZ0pkMwHoWVwTgHiK2ZdSuWH8EnIqQcpTol3jehFktVhzg9DFeBmST3gKDaiGvi5hqRoAgKDqeySQdosBHx98wDxxyClbE+DvNhr6pw9ICeHTsfGMJB8/+FUA3YMsrdc+RCYShMw9FL4Dr4Bn+WrYSs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=XlDSALWR; arc=none smtp.client-ip=198.175.65.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770023590; x=1801559590; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=vXOTW8XU61f4CbGPL3gcpzwdMcHgirqYXw8QOj4FO6Q=; b=XlDSALWRYMUKW4j+HxjIDI9ObLAz31I45q0kCZzp49/HJ3GzTNJSre4j bgjRb/4oNzlx4ylbwFlXOF0Ss/VUqTZ11pPC3XVyn2WoiTeJE+3XyQWwJ VD65YSF9G1lY2Hayunfl3vOW8GUMItcucA+trK/DCCcV/YiADZv1WAhLx cMxAReGGz3U03MkbipfR+uPoPQERtUwka/+Empf0ZXVKodI8waWtE4ddW 6bdeEFKMY7vZSU+0jgdIlQW8thEoGRL7LzHPbedK3tweb8K0bFyGUXpKq DLf8dDw2A6UBYJB6YvRrkXwrs+Av4JVH2N417iYBT7sXhfmcB3FanBeEQ Q==; X-CSE-ConnectionGUID: 2Sho3cmbSOSIuZSl3th+qQ== X-CSE-MsgGUID: C8nEqzsCRrCW//zESwdL0g== X-IronPort-AV: E=McAfee;i="6800,10657,11689"; a="71160136" X-IronPort-AV: E=Sophos;i="6.21,268,1763452800"; d="scan'208";a="71160136" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2026 01:13:09 -0800 X-CSE-ConnectionGUID: +NriBRTqQlOEiLyPxWQibQ== X-CSE-MsgGUID: TSSK///DRCO7TAWUDBX7mA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,268,1763452800"; d="scan'208";a="213570159" Received: from abityuts-desk.ger.corp.intel.com (HELO [10.245.244.193]) ([10.245.244.193]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2026 01:13:06 -0800 Message-ID: Subject: Re: [PATCH] mm/hmm: Fix a hmm_range_fault() livelock / starvation problem From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: John Hubbard , Matthew Brost Cc: Andrew Morton , intel-xe@lists.freedesktop.org, Ralph Campbell , Christoph Hellwig , Jason Gunthorpe , Jason Gunthorpe , Leon Romanovsky , linux-mm@kvack.org, stable@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Mon, 02 Feb 2026 10:13:03 +0100 In-Reply-To: <0025ee21-2a6c-4c6e-a49a-2df525d3faa1@nvidia.com> References: <20260130144529.79909-1-thomas.hellstrom@linux.intel.com> <20260130100013.fb1ce1cd5bd7a440087c7b37@linux-foundation.org> <57fd7f99-fa21-41eb-b484-56778ded457a@nvidia.com> <2d96c9318f2a5fc594dc6b4772b6ce7017a45ad9.camel@linux.intel.com> <0025ee21-2a6c-4c6e-a49a-2df525d3faa1@nvidia.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.58.2 (3.58.2-1.fc43) Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-DKIM: signer='intel.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-DKIM: signer='@intel.com' status='pass' reason='' X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: intel.com] 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.105.105.114 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender SpamTally: Final spam score: 5 On Sat, 2026-01-31 at 13:42 -0800, John Hubbard wrote: > On 1/31/26 11:00 AM, Matthew Brost wrote: > > On Sat, Jan 31, 2026 at 01:57:21PM +0100, Thomas Hellstr=C3=B6m wrote: > > > On Fri, 2026-01-30 at 19:01 -0800, John Hubbard wrote: > > > > On 1/30/26 10:00 AM, Andrew Morton wrote: > > > > > On Fri, 30 Jan 2026 15:45:29 +0100 Thomas Hellstr=C3=B6m > > > > > wrote: > > > > ... >=20 > >=20 > > > I'm also not sure a folio refcount should block migration after > > > the > > > introduction of pinned (like in pin_user_pages) pages. Rather > > > perhaps a > > > folio pin-count should block migration and in that case > > > do_swap_page() > > > can definitely do a sleeping folio lock and the problem is gone. >=20 > A problem for that specific point is that pincount and refcount both > mean, "the page is pinned" (which in turn literally means "not > allowed > to migrate/move"). Yeah this is what I actually want to challenge since this is what blocks us from doing a clean robust solution here. From brief reading of the docs around the pin-count implementation, I understand it as "If you want to access the struct page metadata, get a refcount, If you want to access the actual memory of a page, take a pin-count" I guess that might still not be true for all old instances in the kernel using get_user_pages() instead of pin_user_pages() for things like DMA, but perhaps we can set that in stone and document it at least for device-private pages for now which would be sufficient for the do_swap_pages() refcount not to block migration. >=20 > (In fact, pincount is implemented in terms of refcount, in most > configurations still.) Yes but that's only a space optimization never intended to conflict, right? Meaning a pin-count will imply a refcount but a refcount will never imply a pin-count? Thanks, Thomas From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id IEr5I3RsgGn3cDcAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:20:52 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:20:53 +0000 Received: from sea.lore.kernel.org ([172.234.253.10]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmq71-0000000FGAK-3qeT for hi@josie.lol; Mon, 02 Feb 2026 09:20:52 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id C73B530136A5 for ; Mon, 2 Feb 2026 09:18:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1A5C32C032E; Mon, 2 Feb 2026 09:18:26 +0000 (UTC) X-Original-To: stable@vger.kernel.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6E5FA2853EE; Mon, 2 Feb 2026 09:18:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770023906; cv=none; b=LjS8vapHlTkguzEKGPl3mOuRFngQDqMudYavA4bLS9v+ow3ys8QrboClB6mb9fvZZnA9LBA+60IUoHAi6NsGrXr3cToVK/sChlvW7yJPLC+rf/ltDnHt96b+/vtiSKdj63sFo5etvGK4LGiSvdIUvNpCFHXTz54A1ciDvFyRz7c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770023906; c=relaxed/simple; bh=4v3D21B6hTaqn2MwwckEw8K3ezBfFg+HctZkT4afc84=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=gT/Dw5gxREbw9xntJBjw58qoaNSffaW6CohMnrF1Pq//6G8f3TfIi7OkgmdFcPRupG7ABqqiH6daQehtuX/k47H5wTqwHCu7vyZSPKieJsIRmC6SMhsRUmpmcrv8DQVwAC6UQEGPU2Y0UCCA7Q76ei+qtbtw1IvHqwzg12IOgzE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0FDB3339; Mon, 2 Feb 2026 01:18:17 -0800 (PST) Received: from [10.57.95.78] (unknown [10.57.95.78]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2D0263F740; Mon, 2 Feb 2026 01:18:22 -0800 (PST) Message-ID: <57bc3f07-c227-4117-8fb4-a2b198629215@arm.com> Date: Mon, 2 Feb 2026 09:18:20 +0000 Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] arm64/mm: Enable batched TLB flush in unmap_hotplug_range() Content-Language: en-GB To: Anshuman Khandual , linux-arm-kernel@lists.infradead.org Cc: Catalin Marinas , Will Deacon , Yang Shi , Christoph Lameter , linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20260202042617.504183-1-anshuman.khandual@arm.com> <20260202042617.504183-2-anshuman.khandual@arm.com> From: Ryan Roberts In-Reply-To: <20260202042617.504183-2-anshuman.khandual@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.234.253.10 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 5 On 02/02/2026 04:26, Anshuman Khandual wrote: > During a memory hot remove operartion both linear and vmemmap mappings for > the memory range being removed, get unmapped via unmap_hotplug_range() but > mapped pages get freed only for vmemmap mapping. This is just a sequential > operation where each table entry gets cleared, followed by a leaf specific > TLB flush, and then followed by memory free operation when applicable. > > This approach was simple and uniform both for vmemmap and linear mappings. > But linear mapping might contain CONT marked block memory where it becomes > necessary to first clear out all entire in the range before a TLB flush. > This is as per the architecture requirement. Hence batch all TLB flushes > during the table tear down walk and finally do it in unmap_hotplug_range(). I might be worth mentioning the impact of not bein architecture compliant here? Something like: Prior to this fix, it was hypothetically possible for a speculative access to a higher address in the contiguous block to fill the TLB with shattered entries for the entire contiguous range after a lower address had already been cleared and invalidated. Due to the entries being shattered, the subsequent tlbi for the higher address would not then clear the TLB entries for the lower address, meaning stale TLB entries could persist. > > Besides it is helps in improving the performance via TLBI range operation nit: ^^ (remove) > along with reduced synchronization instructions. The time spent executing > unmap_hotplug_range() improved 97% measured over a 2GB memory hot removal > in KVM guest. That's a great improvement :) > > This scheme is not applicable during vmemmap mapping tear down where memory > needs to be freed and hence a TLB flush is required after clearing out page > table entry. > > Cc: Catalin Marinas > Cc: Will Deacon > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Closes: https://lore.kernel.org/all/aWZYXhrT6D2M-7-N@willie-the-truck/ > Fixes: bbd6ec605c0f ("arm64/mm: Enable memory hot remove") > Cc: stable@vger.kernel.org > Signed-off-by: Ryan Roberts > Signed-off-by: Anshuman Khandual I suggested the original shape of this and I see you have added my SOB. Final patch looks good to me - I'm not sure if it's correct for me to add Rb, but here it is regardless: Reviewed-by: Ryan Roberts > --- > arch/arm64/mm/mmu.c | 81 +++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 67 insertions(+), 14 deletions(-) > > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index 8e1d80a7033e..8ec8a287aaa1 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -1458,10 +1458,32 @@ static void unmap_hotplug_pte_range(pmd_t *pmdp, unsigned long addr, > > WARN_ON(!pte_present(pte)); > __pte_clear(&init_mm, addr, ptep); > - flush_tlb_kernel_range(addr, addr + PAGE_SIZE); > - if (free_mapped) > + if (free_mapped) { > + /* > + * If page is part of an existing contiguous > + * memory block, individual TLB invalidation > + * here would not be appropriate. Instead it > + * will require clearing all entries for the > + * memory block and subsequently a TLB flush > + * for the entire range. > + */ > + WARN_ON(pte_cont(pte)); > + > + /* > + * TLB flush is essential for freeing memory. > + */ > + flush_tlb_kernel_range(addr, addr + PAGE_SIZE); > free_hotplug_page_range(pte_page(pte), > PAGE_SIZE, altmap); > + } > + > + /* > + * TLB flush is batched in unmap_hotplug_range() > + * for the entire range, when memory need not be > + * freed. Besides linear mapping might have CONT > + * blocks where TLB flush needs to be done after > + * clearing all relevant entries. > + */ > } while (addr += PAGE_SIZE, addr < end); > } > > @@ -1482,15 +1504,32 @@ static void unmap_hotplug_pmd_range(pud_t *pudp, unsigned long addr, > WARN_ON(!pmd_present(pmd)); > if (pmd_sect(pmd)) { > pmd_clear(pmdp); > + if (free_mapped) { > + /* > + * If page is part of an existing contiguous > + * memory block, individual TLB invalidation > + * here would not be appropriate. Instead it > + * will require clearing all entries for the > + * memory block and subsequently a TLB flush > + * for the entire range. > + */ > + WARN_ON(pmd_cont(pmd)); > + > + /* > + * TLB flush is essential for freeing memory. > + */ > + flush_tlb_kernel_range(addr, addr + PMD_SIZE); > + free_hotplug_page_range(pmd_page(pmd), > + PMD_SIZE, altmap); > + } > > /* > - * One TLBI should be sufficient here as the PMD_SIZE > - * range is mapped with a single block entry. > + * TLB flush is batched in unmap_hotplug_range() > + * for the entire range, when memory need not be > + * freed. Besides linear mapping might have CONT > + * blocks where TLB flush needs to be done after > + * clearing all relevant entries. > */ > - flush_tlb_kernel_range(addr, addr + PAGE_SIZE); > - if (free_mapped) > - free_hotplug_page_range(pmd_page(pmd), > - PMD_SIZE, altmap); > continue; > } > WARN_ON(!pmd_table(pmd)); > @@ -1515,15 +1554,20 @@ static void unmap_hotplug_pud_range(p4d_t *p4dp, unsigned long addr, > WARN_ON(!pud_present(pud)); > if (pud_sect(pud)) { > pud_clear(pudp); > + if (free_mapped) { > + /* > + * TLB flush is essential for freeing memory. > + */ > + flush_tlb_kernel_range(addr, addr + PUD_SIZE); > + free_hotplug_page_range(pud_page(pud), > + PUD_SIZE, altmap); > + } > > /* > - * One TLBI should be sufficient here as the PUD_SIZE > - * range is mapped with a single block entry. > + * TLB flush is batched in unmap_hotplug_range() > + * for the entire range, when memory need not be > + * freed. > */ > - flush_tlb_kernel_range(addr, addr + PAGE_SIZE); > - if (free_mapped) > - free_hotplug_page_range(pud_page(pud), > - PUD_SIZE, altmap); > continue; > } > WARN_ON(!pud_table(pud)); > @@ -1553,6 +1597,7 @@ static void unmap_hotplug_p4d_range(pgd_t *pgdp, unsigned long addr, > static void unmap_hotplug_range(unsigned long addr, unsigned long end, > bool free_mapped, struct vmem_altmap *altmap) > { > + unsigned long start = addr; > unsigned long next; > pgd_t *pgdp, pgd; > > @@ -1574,6 +1619,14 @@ static void unmap_hotplug_range(unsigned long addr, unsigned long end, > WARN_ON(!pgd_present(pgd)); > unmap_hotplug_p4d_range(pgdp, addr, next, free_mapped, altmap); > } while (addr = next, addr < end); > + > + /* > + * Batched TLB flush only for linear mapping which > + * might contain CONT blocks, and does not require > + * freeing up memory as well. > + */ > + if (!free_mapped) > + flush_tlb_kernel_range(start, end); > } > > static void free_empty_pte_table(pmd_t *pmdp, unsigned long addr, From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id OJFCNaZugGl+tzcAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:30:14 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:30:15 +0000 Received: from sto.lore.kernel.org ([172.232.135.74]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmqG5-0000000FWlb-3agk for hi@josie.lol; Mon, 02 Feb 2026 09:30:14 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sto.lore.kernel.org (Postfix) with ESMTP id 078A2300558F for ; Mon, 2 Feb 2026 09:30:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 442571EB9FA; Mon, 2 Feb 2026 09:30:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="b90ybjJm" X-Original-To: stable@vger.kernel.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 911D82D8766 for ; Mon, 2 Feb 2026 09:30:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.11 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024610; cv=none; b=P+o7NwbRD/6vLRwg90lSzHSTIUkC+ktyzSiuAelHv4gQM3zMskny2XJINY+sqUMg5D0F9pB0CpG9OWtFBxY9PxtaUvhp9K4/YUZ/SpkzpndhMEChTi2l1A7sAUbBuS9UwKGbp39hYeOwLvCHZqseNUTiQkS6SwY16wyZ4UjvEAQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024610; c=relaxed/simple; bh=a47tOyzOYXg7hjTEWYS+Q9Gs3aPc6OTzuqo3JGwuYTc=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=fpqCnNj3+3Q9t41dEFCsapcTtdDkXmg/8D625rp+8lN8JKMdiCRylK/mVIXbQO8bOwEiA2uRaxNe2S9yH4/F2JrNtwqC2JMIQY2TGB3Xz+wJqvYSZrSSXFdIL2nZXiCTuQbUEkAKsHAFzUrF+7VXTJG3mmdcRT0yn43cfYr7P9I= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=b90ybjJm; arc=none smtp.client-ip=198.175.65.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770024609; x=1801560609; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=a47tOyzOYXg7hjTEWYS+Q9Gs3aPc6OTzuqo3JGwuYTc=; b=b90ybjJmZJhnPMTp+W1jadsCAZ289lajYNblrEj5UeRvbagofTXRYGG+ Rw5OVXlDWEZScAkGvdha0OlWRo917joWee+uGguv5tYM3JKPCZ8thf5pW WIE8I+hI4VqTygxC+k/fJdZcqbz2ttrLxFFdO+JsXxdUgwGZlM4Kci9PZ W/mHhUKMWh2XEFK80Zhu8y0zYAklfzpRaWx8tzcpAi5kHhkzozfgzbA72 6zxnKjmiO/Aepq0lVKVNANnCPCtp7L6yqR34e/ejcT7DYHvxqCfnh0lCu Gxh/0j66tw1dG+Smovm4cCfCtw/oEmc/CU4JgcONAPF/D/K2V+sL08MCE Q==; X-CSE-ConnectionGUID: jmLxhnwLQ5ShO3W3baLCrg== X-CSE-MsgGUID: skZqQ2mjTBOl0HdVIB/WLw== X-IronPort-AV: E=McAfee;i="6800,10657,11689"; a="81492751" X-IronPort-AV: E=Sophos;i="6.21,268,1763452800"; d="scan'208";a="81492751" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2026 01:30:09 -0800 X-CSE-ConnectionGUID: T4VfLHqsQ1Cvz8JZMUzNng== X-CSE-MsgGUID: XX/xY5LOTheTTVox4SAc1g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,268,1763452800"; d="scan'208";a="240159385" Received: from abityuts-desk.ger.corp.intel.com (HELO [10.245.244.193]) ([10.245.244.193]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2026 01:30:05 -0800 Message-ID: Subject: Re: [PATCH] mm/hmm: Fix a hmm_range_fault() livelock / starvation problem From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Alistair Popple , Matthew Brost Cc: John Hubbard , Andrew Morton , intel-xe@lists.freedesktop.org, Ralph Campbell , Christoph Hellwig , Jason Gunthorpe , Jason Gunthorpe , Leon Romanovsky , linux-mm@kvack.org, stable@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Mon, 02 Feb 2026 10:30:02 +0100 In-Reply-To: References: <20260130144529.79909-1-thomas.hellstrom@linux.intel.com> <20260130100013.fb1ce1cd5bd7a440087c7b37@linux-foundation.org> <57fd7f99-fa21-41eb-b484-56778ded457a@nvidia.com> <2d96c9318f2a5fc594dc6b4772b6ce7017a45ad9.camel@linux.intel.com> <0025ee21-2a6c-4c6e-a49a-2df525d3faa1@nvidia.com> <81b9ffa6-7624-4ab0-89b7-5502bc6c711a@nvidia.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.58.2 (3.58.2-1.fc43) Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-DKIM: signer='intel.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-DKIM: signer='@intel.com' status='pass' reason='' X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: intel.com] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender SpamTally: Final spam score: 5 SGksCgpPbiBNb24sIDIwMjYtMDItMDIgYXQgMTE6MTAgKzExMDAsIEFsaXN0YWlyIFBvcHBsZSB3 cm90ZToKPiBPbiAyMDI2LTAyLTAyIGF0IDA4OjA3ICsxMTAwLCBNYXR0aGV3IEJyb3N0IDxtYXR0 aGV3LmJyb3N0QGludGVsLmNvbT4KPiB3cm90ZS4uLgo+ID4gT24gU3VuLCBGZWIgMDEsIDIwMjYg YXQgMTI6NDg6MzNQTSAtMDgwMCwgSm9obiBIdWJiYXJkIHdyb3RlOgo+ID4gPiBPbiAyLzEvMjYg MTE6MjQgQU0sIE1hdHRoZXcgQnJvc3Qgd3JvdGU6Cj4gPiA+ID4gT24gU2F0LCBKYW4gMzEsIDIw MjYgYXQgMDE6NDI6MjBQTSAtMDgwMCwgSm9obiBIdWJiYXJkIHdyb3RlOgo+ID4gPiA+ID4gT24g MS8zMS8yNiAxMTowMCBBTSwgTWF0dGhldyBCcm9zdCB3cm90ZToKPiA+ID4gPiA+ID4gT24gU2F0 LCBKYW4gMzEsIDIwMjYgYXQgMDE6NTc6MjFQTSArMDEwMCwgVGhvbWFzIEhlbGxzdHLDtm0KPiA+ ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gRnJpLCAyMDI2LTAxLTMwIGF0IDE5OjAx IC0wODAwLCBKb2huIEh1YmJhcmQgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBPbiAxLzMwLzI2IDEw OjAwIEFNLCBBbmRyZXcgTW9ydG9uIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiBPbiBGcmksIDMw IEphbiAyMDI2IDE1OjQ1OjI5ICswMTAwIFRob21hcyBIZWxsc3Ryw7ZtCj4gPiA+ID4gPiA+ID4g PiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gLi4uCj4gPiA+ID4gPiA+IEnigJltIG5vdCBjb252 aW5jZWQgdGhlIGZvbGlvIHJlZmNvdW50IGhhcyBhbnkgYmVhcmluZyBpZiB3ZQo+ID4gPiA+ID4g PiBjYW4gdGFrZSBhCj4gPiA+ID4gPiA+IHNsZWVwaW5nIGxvY2sgaW4gZG9fc3dhcF9wYWdlLCBi dXQgcGVyaGFwcyBJ4oCZbSBtaXNzaW5nCj4gPiA+ID4gPiA+IHNvbWV0aGluZy4KPiAKPiBJIHRo aW5rIHRoZSBwb2ludCBvZiB0aGUgdHJ5bG9jayB2cy4gbG9jayBpcyB0aGF0IGlmIHlvdSBjYW4n dAo+IGltbWVkaWF0ZWx5Cj4gbG9jayB0aGUgcGFnZSB0aGVuIGl0J3MgYW4gaW5kaWNhdGlvbiB0 aGUgcGFnZSBpcyB1bmRlcmdvaW5nIGEKPiBtaWdyYXRpb24uCj4gSW4gb3RoZXIgd29yZHMgdGhl cmUncyBubyBwb2ludCB3YWl0aW5nIGZvciB0aGUgbG9jayBhbmQgdGhlbiB0cnlpbmcKPiB0byBj YWxsCj4gbWlncmF0ZV90b19yYW0oKSBhcyB0aGUgcGFnZSB3aWxsIGhhdmUgYWxyZWFkeSBtb3Zl ZCBieSB0aGUgdGltZSB5b3UKPiBhY3F1aXJlCj4gdGhlIGxvY2suIE9mIGNvdXJzZSB0aGF0IGp1 c3QgbWVhbnMgeW91IHNwaW4gZmF1bHRpbmcgdW50aWwgdGhlIHBhZ2UKPiBmaW5hbGx5Cj4gbWln cmF0ZXMuCj4gCj4gSWYgSSdtIHVuZGVyc3RhbmRpbmcgdGhlIHByb2JsZW0gaXQgc291bmRzIGxp a2Ugd2UganVzdCB3YW50IHRvIHNsZWVwCj4gdW50aWwgdGhlCj4gbWlncmF0aW9uIGlzIGNvbXBs ZXRlLCBpZS4gc2FtZSBhcyB0aGUgbWlncmF0aW9uIGVudHJ5IHBhdGguIFdlIGRvbid0Cj4gaGF2 ZSBhCj4gZGV2aWNlX3ByaXZhdGVfZW50cnlfd2FpdCgpIGZ1bmN0aW9uLCBidXQgSSBkb24ndCB0 aGluayB3ZSBuZWVkIG9uZSwKPiBzZWUgYmVsb3cuCj4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL21t L21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKPiA+ID4gPiBpbmRleCBkYTM2MGE2ZWI4YTQuLjFlN2Nj YzRhMWE2YyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9tbS9tZW1vcnkuYwo+ID4gPiA+ICsrKyBiL21t L21lbW9yeS5jCj4gPiA+ID4gQEAgLTQ2NTIsNiArNDY1Miw4IEBAIHZtX2ZhdWx0X3QgZG9fc3dh cF9wYWdlKHN0cnVjdCB2bV9mYXVsdAo+ID4gPiA+ICp2bWYpCj4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZtZi0+cGFnZSA9IHNvZnRsZWFm X3RvX3BhZ2UoZW50cnkpOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXQgPQo+ID4gPiA+IHJlbW92ZV9kZXZpY2VfZXhjbHVzaXZlX2Vu dHJ5KHZtZik7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNl IGlmIChzb2Z0bGVhZl9pc19kZXZpY2VfcHJpdmF0ZShlbnRyeSkpCj4gPiA+ID4gewo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2 X3BhZ2VtYXAgKnBnbWFwOwo+ID4gPiA+ICsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1ZN QV9MT0NLKQo+ID4gPiA+IHsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog bWlncmF0ZV90b19yYW0gaXMgbm90IHlldAo+ID4gPiA+IHJlYWR5IHRvIG9wZXJhdGUKPiA+ID4g PiBAQCAtNDY3MCwyMSArNDY3MiwxNSBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qg dm1fZmF1bHQKPiA+ID4gPiAqdm1mKQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm1mLQo+ID4gPiA+ID5vcmlnX3B0ZSkpKQo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byB1bmxvY2s7Cj4gPiA+ID4gCj4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBHZXQgYSBwYWdlIHJlZmVyZW5j ZSB3aGlsZSB3ZSBrbm93Cj4gPiA+ID4gdGhlIHBhZ2UgY2FuJ3QgYmUKPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGZyZWVkLgo+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0cnls b2NrX3BhZ2Uodm1mLT5wYWdlKSkgewo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRldl9wYWdlbWFwICpw Z21hcDsKPiA+ID4gPiAtCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfcGFnZSh2bWYtPnBhZ2UpOwo+IAo+IEF0 IHRoaXMgcG9pbnQgd2U6Cj4gMS4gS25vdyB0aGUgcGFnZSBuZWVkcyB0byBtaWdyYXRlCj4gMi4g SGF2ZSB0aGUgcGFnZSBsb2NrZWQKPiAzLiBIYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBwYWdlCj4g NC4gSGF2ZSB0aGUgUFRMIGxvY2tlZAo+IAo+IE9yIGluIG90aGVyIHdvcmRzIHdlIGhhdmUgZXZl cnl0aGluZyB3ZSBuZWVkIHRvIGluc3RhbGwgYSBtaWdyYXRpb24KPiBlbnRyeSwKPiBzbyB3aHkg bm90IGp1c3QgZG8gdGhhdD8gVGhpcyB0aHJlYWQgd291bGQgdGhlbiBwcm9jZWVkIGludG8KPiBt aWdyYXRlX3RvX3JhbSgpCj4gaGF2aW5nIGFscmVhZHkgZG9uZSBtaWdyYXRlX3ZtYV9jb2xsZWN0 X3BtZCgpIGZvciB0aGUgZmF1bHRpbmcgcGFnZQo+IGFuZCBhbnkKPiBvdGhlciB0aHJlYWRzIHdv dWxkIGp1c3Qgc2xlZXAgaW4gdGhlIHdhaXQgb24gbWlncmF0aW9uIGVudHJ5IHBhdGgKPiB1bnRp bCB0aGUKPiBtaWdyYXRpb24gaXMgY29tcGxldGUsIGF2b2lkaW5nIHRoZSBsaXZlbG9jayBwcm9i bGVtIHRoZSB0cnlsb2NrIHdhcwo+IGludHJvZHVjZWQKPiBmb3IgaW4gMWFmYWViODI5M2M5YS4K PiAKPiDCoC0gQWxpc3RhaXIKPiAKPiA+ID4gCgpUaGVyZSB3aWxsIGFsd2F5cyBiZSBhIHNtYWxs IHRpbWUgYmV0d2VlbiB3aGVuIHRoZSBwYWdlIGlzIGxvY2tlZCBhbmQKd2hlbiB3ZSBjYW4gaW5z dGFsbCBhIG1pZ3JhdGlvbiBlbnRyeS4gSWYgdGhlIHBhZ2Ugb25seSBoYXMgYSBzaW5nbGUKbWFw Y291bnQsIHRoZW4gdGhlIFBUTCBsb2NrIGlzIGhlbGQgZHVyaW5nIHRoaXMgdGltZSBzbyB0aGUg aXNzdWUgZG9lcwpub3Qgb2NjdXIuIEJ1dCBmb3IgbXVsdGlwbGUgbWFwLWNvdW50cyB3ZSBuZWVk IHRvIHJlbGVhc2UgdGhlIFBUTCBsb2NrCmluIG1pZ3JhdGlvbiB0byBydW4gdHJ5X3RvX21pZ3Jh dGUoKSwgYW5kIGJlZm9yZSB0aGF0LCB0aGUgbWlncmF0ZSBjb2RlCmlzIHJ1bm5pbmcgbHJ1X2Fk ZF9kcmFpbl9hbGwoKSBhbmQgZ2V0cyBzdHVjay4KCkhvd2V2ZXIgaXQgbG9va3MgbGlrZSBNYXR0 IEJyb3N0LCBpbnNwaXJlZCBieSB0aGUgYWJvdmUsIHRyaWVkIHRvCmNoYW5nZSB0aGUgb3JkZXIg b2YgdHJ5X3RvX21pZ3JhdGUoKSB2cyBscnVfYWRkX2RyYWluX2FsbCgpIHdoaWNoIHdvdWxkCmNh dXNlIHRoZSBmYXVsdCBoYW5kbGVyIHRvIGV2ZW50dWFsbHkgYmxvY2sgb24gYSBtaWdyYXRpb24g ZW50cnkuIFRoYXQKc2VlbXMgdG8gc29sdmUgdGhlIGlzc3VlIHdlJ3JlIHNlZWluZyBoZXJlLgoK U3RpbGwsIEkgdGhpbmsgdGhlIHNwaW5uaW5nIG9uIHRoZSB0cnlsb2NrIGhlcmUgaXMgc3RpbGwg c29tZXRoaW5nIHdlJ2QKd2FudCB0byBnZXQgcmlkIG9mZiwgYmVjYXVzZSBJTU8gd2Ugc2hvdWxk bid0IG5lZWQgdG8gYWRhcHQgb3RoZXJ3aXNlCmNvcnJlY3QgYnV0IHNsaWdodGx5IHN1Ym9wdGlt YWwgY29kZSB0byBhIGJhZGx5IGJlaGF2aW5nIHBhdGggaW4gdGhlCmZhdWx0IGhhbmRsZXIuIElu IGVzc2VuY2Ugd2UncmUgbmV2ZXIgYWxsb3dlZCB0byBsb2NrIGEgZGV2aWNlLXByaXZhdGUKZm9s aW8gYW5kIHRoZW4gY2FsbCBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBleGVjdXRlIG9uIGFsbCBw cm9jZXNzb3JzCmJlZm9yZSB1bmxvY2tpbmcuCgpUaGFua3MsClRob21hcwo= From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id qJIKONNwgGl8GDkAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:39:31 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:39:32 +0000 Received: from tor.lore.kernel.org ([172.105.105.114]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmqP5-0000000FnL9-21u3 for hi@josie.lol; Mon, 02 Feb 2026 09:39:31 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id 81D773045E37 for ; Mon, 2 Feb 2026 09:35:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 288102D46B4; Mon, 2 Feb 2026 09:35:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="FtmFpixs"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="FtmFpixs" X-Original-To: stable@vger.kernel.org Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012047.outbound.protection.outlook.com [52.101.66.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7CFC21ADC83; Mon, 2 Feb 2026 09:35:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.47 ARC-Seal:i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024913; cv=fail; b=EszIT8sgEjvxPWHP4E4Kr4GjtwCtUd8WDM7uEO9BfSflB4mBeAaYdGOh+fODdwtsRfhSsev4fOJ0RGGS8uNEUHAPp1OLYHBKtlQcR2gyLvbgEa5XAvsuqU7dmm80p6KE691HsZ/rdKp7/Go7Z5GFqieH5JeAlz2RyJBuzZADB94= ARC-Message-Signature:i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024913; c=relaxed/simple; bh=7SQp5jjOr6zqcn/95ieqG/NqQwhvpYpygWNOBSmDUgc=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=VCusd5GhylJ8by5wC1/HkanwK8TGlpO01XXLDT3n2edoSkptbtEfi+6Yi2yhJ+LmYapr37TUAJAiHW1IcLg23rywy573W0DxYldY6kuEiSlMYGKU5juhj9Fcy4aIvV6Bfv4Frg/VtgV39bT3cItN511jFvQrlzAfbXEKCO4/mAY= ARC-Authentication-Results:i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=FtmFpixs; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=FtmFpixs; arc=fail smtp.client-ip=52.101.66.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=GaAnr2Zi99uPrERA2+XfN9s54N0JewWKrHhjaBYPMGFB1Cy6UyzP9oQgRyvNpgvwEh8hxaxN594ES4uPAJMmsIkvE02afBCGcXmY/+WlOu12y2TuxOg70PGQNgrDX5jo11wvo2rA4NxiuiRkP6V8cc4DvYRNWBESNWV8lSI01chIPctufRRZnxBRupcMbJc8fp7aN5wIZ4Tfg8NYTXYL0Vss8wU1kT4sHTzEJkW35u/UDPGO3V65vsUixZ+G2juEUPzvJON47DY9YmD+inygfLJ1xV7eDiZZ474X5IfZjLjdcpqb74WJFvUgxJsOXOWgY6c5u7seaKlzHvSYULl+Sg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MBkze4gcyehuSlgBwjj0rmPLXgG2pGmw9DcRAJW58HM=; b=uhm2rNvvFNh6j0wPMUQNr9MyrVajr18Kta03xC4mhc1dKLVHJ+zUjfIdBWxBJ99aHPvvqQpZgJ/OXsCP7pNz20dqrTH0cvVmTn/xd/cij+eDp29PKdi35RudtkaACnbVcNPXhaS5kC/t7jFb25YLyBp9f3X9WvHy64Bzm3eEedPaamLnf/kxQ9u1GZwKAH/Jg5psSxrx06i/IGIqZoApJIrmi8RR3+6RG1XKEymh5FuOWpqIOSRT1UTnRvkiwa8Bgh6BAKjCbFfYrMZmn2oKFJBCLTJoIdGIokPzspIL4g7BGpsdKDin35+ciF6hLBem5pbHlc+8JIVeX4mIE7w5eg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MBkze4gcyehuSlgBwjj0rmPLXgG2pGmw9DcRAJW58HM=; b=FtmFpixsle06FT2PT+2S+EeYUD0vN+ZzOVGMOvwoRi6TQkwQ338zmhS1KWlbLb/NKzvlNW/N4/lvp2VqLupN6/ottVrijmkTSQ5fY3DRBciTPppTcMPuGsncZWGC7lTj6bqFeBfR+IbaFolSQOQ1uOCOWqcXHbccNcBq1uM8R2E= Received: from DB9PR06CA0021.eurprd06.prod.outlook.com (2603:10a6:10:1db::26) by AS2PR08MB10036.eurprd08.prod.outlook.com (2603:10a6:20b:64d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.10; Mon, 2 Feb 2026 09:35:04 +0000 Received: from DU2PEPF0001E9C1.eurprd03.prod.outlook.com (2603:10a6:10:1db:cafe::b9) by DB9PR06CA0021.outlook.office365.com (2603:10a6:10:1db::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.13 via Frontend Transport; Mon, 2 Feb 2026 09:35:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF0001E9C1.mail.protection.outlook.com (10.167.8.70) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Mon, 2 Feb 2026 09:35:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uj8ovVaGSqU7tFdFGQSfXYAQ1PU5DVoHjkMpf5g5Cvp31trLuY+Dp24ELScVt0N7mhV959s74kyqM+7XFtsshkLY15O/y0DdMa8RyzzBGZWEFkym5XPfKMRyN+e1cYQB16w8MJgR8SlujVVQW9BvMtVxvBJ0QIqtuP2/9LYrH6mwAnntwl08xQOd8IgeqjvJwNi6vdf4fs0WA3TivPYPYVgI0s39ZwtmjrgL2xe/n8uwsH1chaifNHZM85XmKbW3LFPjA7JCUybbTEW3qeAl7oWrOlJohTjnOmHGMRY741e6J/suWywn2bRPDqzoQiZqvN0M+s52ZJ2eDlyzoYR36Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MBkze4gcyehuSlgBwjj0rmPLXgG2pGmw9DcRAJW58HM=; b=CRMVW1Sdtgz3REK6oLEgXgp3VON0zZO1wtTRZ9aHh4OQ68Hu4jNewxYw/JWWLeFgNiux7YGLsl1icThKrNUTbFPTH6nCCuQnaSzhVdCUEmUVP9DF+EJ4YErvJBzvQ0X/4AoYdfvGjO4Bt53yM27uqtAauMM5CHwYfTarwF0Lq2z0R7lE9v6v1DUFPtoRE3P58/ozyCqpAFQmc2gLnqUTlbxCESVHpeSyTM+GmhkckgGKfBIFJ2/Zlh7Ja8YprdluAv/oI2CprGeGY9ShGs1VNqpj5rPXZ5+mOC+RlBOW1KY0juDOBGTJAdIW6HXDyZliQktpQD2BObtLjcKbPE+2AA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MBkze4gcyehuSlgBwjj0rmPLXgG2pGmw9DcRAJW58HM=; b=FtmFpixsle06FT2PT+2S+EeYUD0vN+ZzOVGMOvwoRi6TQkwQ338zmhS1KWlbLb/NKzvlNW/N4/lvp2VqLupN6/ottVrijmkTSQ5fY3DRBciTPppTcMPuGsncZWGC7lTj6bqFeBfR+IbaFolSQOQ1uOCOWqcXHbccNcBq1uM8R2E= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU4PR08MB11769.eurprd08.prod.outlook.com (2603:10a6:10:644::21) by PAVPR08MB9257.eurprd08.prod.outlook.com (2603:10a6:102:309::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Mon, 2 Feb 2026 09:34:01 +0000 Received: from DU4PR08MB11769.eurprd08.prod.outlook.com ([fe80::d424:cd62:81a8:490f]) by DU4PR08MB11769.eurprd08.prod.outlook.com ([fe80::d424:cd62:81a8:490f%6]) with mapi id 15.20.9564.016; Mon, 2 Feb 2026 09:34:00 +0000 Message-ID: Date: Mon, 2 Feb 2026 09:33:59 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3] coresight: etm3x: Fix cntr_val_show() to match cntr_val_store() behavior To: Kuan-Wei Chiu , James Clark Cc: mike.leach@linaro.org, alexander.shishkin@linux.intel.com, gregkh@linuxfoundation.org, mathieu.poirier@linaro.org, leo.yan@arm.com, Al.Grant@arm.com, jserv@ccns.ncku.edu.tw, marscheng@google.com, ericchancf@google.com, milesjiang@google.com, nickpan@google.com, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20251202082613.3265761-1-visitorckw@gmail.com> <3bec7ceb-61a8-4b38-a794-02ee2fc9e68c@linaro.org> Content-Language: en-US From: Suzuki K Poulose In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LNXP265CA0087.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:76::27) To DU4PR08MB11769.eurprd08.prod.outlook.com (2603:10a6:10:644::21) Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU4PR08MB11769:EE_|PAVPR08MB9257:EE_|DU2PEPF0001E9C1:EE_|AS2PR08MB10036:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a912d51-61ac-4f62-7133-08de623e586e X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?T0I2a1dDalNqRXZxVjlKVnM5bUdrZWtrZ1BHaU5vVE9FbUpqWmJaRCs4NkNJ?= =?utf-8?B?QVVOblRNMmtSaEpTMjA4RCtTOTBEM0xpYXJuQXZ1SFgxMTZtMVJxazQraVFl?= =?utf-8?B?UlJPZ3k5Q0d4K29pWjFrc1BYdGFERTk5ZDJxQ1JiaG5sVDlLY1BBa2gwZ0du?= =?utf-8?B?TDUxU29mUmZPcHpNN0E5eThWVWlkL0FabUxSWUo3c0dtOWtVMHRFN1pUSklG?= =?utf-8?B?N0pkUlR5OTlyNW1qL1hlcEg0cTJjV0Zkd3RwYjBQZVVrWloxNmU3L0xjSExO?= =?utf-8?B?ZkpwT3htQU0rL1hrVk10dXZUeXBGZ1NwZjVYSXBMSzZPQitsZDVSUW84dDJh?= =?utf-8?B?akdENks5cmRXbG1TeXRnamV5VTcxU1pPVGdXUHFCZnp4ZTNNR2FaU2Y3TFcr?= =?utf-8?B?aUsvK3Rld2hTVUdpT1ZpYXFVMys2dFpDQStZVzNYK3YvclpEdFA3eXU3cUg2?= =?utf-8?B?QUMzRFFQU1AvL2N2cDFoWFNoWmZWR0RSUVJRYjFoWHVBNTl0OWJPY1p4WlZs?= =?utf-8?B?SlE3WngvbnhwdG96MDJDcUk3THVyd0szdzRpQlR0cHFxbUhBeUlidVVoUnBX?= =?utf-8?B?RkFqcHV1NXhGL1piMWVKMThFREp1dllaZUp5NDhERldsZ3VuRFQwYWYvWTVo?= =?utf-8?B?MHY3RmZFSmxNMG9WWE13OUlhblA1Rmt3ZCs4QTlqeUlhbkM2b3NzL0FoSmVV?= =?utf-8?B?bGZQRWNyWWI1b0t6SXB6dDhmbWhVbU5sYzRxMEE5QndwZjY2eXRNV25kZ0I5?= =?utf-8?B?eTdGMHppUTMycVRtbndMWnVMNGozSEMzM2pCNHJGd1VydEJQUkpEb043SC9M?= =?utf-8?B?V3grNmJ0TnpneC9PNmR5a05oVmZKdHdZWitNOUdDd0RGSlJsZjNqbUNlMTYr?= =?utf-8?B?anRid2ZmQ1N2RUIxbTh4MnFNbnQ4OWE1eGh1Y0ZZNmhLVmpqVGdSWTBOMjc5?= =?utf-8?B?WnBQQ3luNTdKbVdKRUJHVktpRWxLN3pVR1dKWVNibWxUNkR5bW8rUTViNHJz?= =?utf-8?B?clIxcmF1MWVPTkRvWlVCS0dIZXFRVmJOVTRkT09veDdnQ0hQL2pIbTBsZkNh?= =?utf-8?B?Q1h1RFVYVzNFY2ZFcmF5UlZiRU1KcENsM2thdnJCbmJFTzUwN0wrWTg3dFc1?= =?utf-8?B?OEtrU1c2T2tPNUpNRXU3cXBZMHREYXJFbHlJNXN4MDQzZHNDWGhPTVMzaGNv?= =?utf-8?B?SGlEVk84d2VSakc5V0dubWxrU3hEQnBRNm9jcHMxazFNQUtVUlJXa3dSTlRq?= =?utf-8?B?cjJsMjY2d1YzQmRCZ2NWeU1GY3BycXI1M1JST0RrSHFhVTM3a0lVMXhpWnNX?= =?utf-8?B?RlpmWkJVcjkwYmZQak9IOVAvUEw3QW9PeENhZkxES1l2OHluVjdFb3krdWFV?= =?utf-8?B?aTFtUWRNMEUxK2FzL3VVRWhMRlR2NDRKSXRSOSs4VXkrcUpraFJwM3JkVW50?= =?utf-8?B?RWFROWYxVWdweXkwV2haeXE2RGZRRVNTeXJZUGw4NWpWZ0hjT3VGektGZWcx?= =?utf-8?B?SXRRWlJlakljWTF2Z3UvVkErNEQ3dE9VS3BmaG9MV3liZXF6MHVTN1V6Q0Fh?= =?utf-8?B?R2JIZytCaGpjZjIwRjFyZFhrZGtGYXNIbm85WTB3dThseGpwbDI2cWFtK0xD?= =?utf-8?B?enBKd3ZUdlZuNG45NTJscG5TSjJMRzl3S2NVUGI0WkVWUEROZ0hIc2NFNUQ5?= =?utf-8?B?N3NGbGVRc1FtNkpVWW5naUtNUGhZOFllbzhmNHRTbEYzdHBORk1SMllTL09z?= =?utf-8?B?V0NDNVY0eGxVT0diV3dSdVgyNFMvb0pDMzhWRXlVei9vaGZ3TXltZnJaczNz?= =?utf-8?B?cExnZTVuZ29kZTB5MjIxWTdlNHAxa0NxQ0xYWXplVE5KZmlpYWFXSnhKQVk3?= =?utf-8?B?S3dkdzBxcWFLaVJ2RVcxWTdOaThBODM4UHIvZFowK1pUZ0hpczd4dUR5dm1E?= =?utf-8?B?WXUyeVRHOHlIOWNtYmJETXc3eGp0eFFXZDRhN05RS3BtNEtGVmdIazVvaVBN?= =?utf-8?B?MHhzb1JzZ0ZlVnNmRGIwYmdzOTZVcU01MU9kTUxJeTA3WXRYMmI5VXRja2Yv?= =?utf-8?B?TGlvN2FQUTFldkIrTm1qbWFPRWVnMlZqWUZIWUdyUXgxVnhlRFpLWjZZTmhs?= =?utf-8?Q?tV8kECjC1CYaF8RW/abOTJVoq?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU4PR08MB11769.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9257 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF0001E9C1.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 429b5e0d-bbf9-48f0-ea90-08de623e325f X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|35042699022|1800799024|14060799003|376014|7416014|36860700013|13003099007|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Ni9nWFJuRjF0QWVaTEdVV3pZYVBmaWREeWpzclZkaW9OSU1oZ2pYRXVsZkhp?= =?utf-8?B?REVTSlkxd3ZFODNwRGYwRGQ3L1AvUW1xV0VqcW9icDBnL0FqdjRjbGZRRGsw?= =?utf-8?B?dFpvNS9IYUdETUs1ZHZDc3d4amdGVzRrcmtXUmVzenpqWkFBbUYvZHFjUEdR?= =?utf-8?B?bllSWVZVak1hQ0s2K0FycHhGRXJsNVQvOXZVSDNnQVJqZDR0TWJZRFR4dWh5?= =?utf-8?B?NmdrOWJsVzRXN2xwOHVRNTh1ZnZHTFBiclJqakRjeHAvaG5MbXhMTXJoM3Jo?= =?utf-8?B?Ti9tUzdPWU80QTNaYW16WTFaYTJqODR1Zlo1cFROVndoaVUvZ1Zkd0VrNnRK?= =?utf-8?B?cFVkek1WU2wvZC84TVhQeExRcXFPVG9QMG5LNDVEZ3FDeUhnTVZqUU40TUda?= =?utf-8?B?ZEFSQzVjRHNjN28vdFcyU2lwSGlqKzNqRDlNRjhXclRFVnlxc3dQcHJUQzlK?= =?utf-8?B?Q1QvUW5WQm1jMG1VMWFpOVJzdzMzclcxWVJSMkZ3NU0xckdjL1FldElDbERq?= =?utf-8?B?cUtoSSs5c0Mxc0pYaXcxTVJydHhwOXIxbW96dG45TWU2Q2NLamdQSGI3VDJZ?= =?utf-8?B?Z0N6MnY1akxDbFdNNFowVFVPVDJ1bzFZTzVmQ296N0xteFNpV3MzNW9sb3k0?= =?utf-8?B?K1lDQkR6a2h5aU02Qkd1eDJXUWQzYVRCckNrcmVSbFoySmdxMEJ6YXVRbW9o?= =?utf-8?B?Szc5WERtS0ZBdHp3dHJVdUNCUGx5aGpwc25aZHpEV285cmZpS3RCRlE3cWVq?= =?utf-8?B?WUYvWDAyR01DUWdJdDE3R1p3UVV3RkRCSWlwR204eWRnREVoRWp2ZXZIYXNG?= =?utf-8?B?R3QwV0UrNks4bGk2Z2xqZkcrb09SZTZRTmlVeVRpcEh5UXVNaGh3c1NldUdP?= =?utf-8?B?dkduOEdVZGRselBaQlgwYUtKKzVMNm5VMW85ak8xcE9ZY2RmSEJLTjd2U0R3?= =?utf-8?B?NlRaeGNDRlFwU2xVNDJ5TkNmRnljR1l5Mlh6cmV5S3hyNWUrK29uTVFuUmpQ?= =?utf-8?B?bTA2c015Z0gxMmEvdmZIUlhsT1krVWlMUzdQc0FWN0o5VHUyRTBRK21acHRs?= =?utf-8?B?ZDNObWRlazRZSW9NTmZldklxUC9BWExBVFRFbVRLME9EWkV0YXgybnVVU2Vt?= =?utf-8?B?RFJvdnZ5ZUFFQUlDOXlDS25iajN1TnoxWnhsYXJ2L3c5alJnWXNUSjZZRTcz?= =?utf-8?B?VUtuQXdQRHhKelVGTWltNVhvVVY5dWRtZlE0Rkkxc01MRU5KWDN2bmlkTjg5?= =?utf-8?B?ZnE4eTR2dG9hbmg3OS9QelNFaFJxb3BWM1ZqYVBOaEl1bTFrWWdEZDc4TWJD?= =?utf-8?B?cWx1RW5nbVVZaU8vQkYycFVlR3VWVGFkT2pFc3lUNStrV1ZDZkdNUEtUN0tI?= =?utf-8?B?VVlLUG9kMmtuR0NvS0c4TDY2TFY5STl5MW5FNlVjSCt0SzJPNExMWFAyYkYw?= =?utf-8?B?RDFuMmVRai9qSFRmdFVXcDhBNkpjdWpNczBYS0h3bFRnR1E3c2xSRExBa0Vk?= =?utf-8?B?ZFEzMGNDVXVDU2M3TytEMWNaVjFvWjliWTE0NTVoL3BWcUhTc0ZlVXNoVmxY?= =?utf-8?B?dEQvU3VQREVzVkpMdGhLcGlQLzNlY0c2dE9DUCt4WFFoVHBZdkdlZHpOQVBZ?= =?utf-8?B?UHYyK2tmSHVFSWFaTG82aUx0a1dIa0duMVk3aE9mbXNGMHRKdWpDN3grSE5I?= =?utf-8?B?Q3RtZW1NOU5XMCt6QzlzeUNJcWRPWjQrejNSNlJWVXZ4Q0R1QmR1d2lpYUVE?= =?utf-8?B?WlVQYm13SlpoQ2FXWGdYL25YU1N0QnBoQUIxK1hMTW9MZ3hUSW9CV0F6dFNC?= =?utf-8?B?SEhmNS9ES0VKS2JBaW9Dbml3Tk5NeHR3OWtSWklNVEYvU3VwNXgybDRqdmpX?= =?utf-8?B?bnhPWkN2UTFlTWp4YWZQdW5oK2swZGtoV0lmN0RTUVZicUZrTHFzRnpqTVQ0?= =?utf-8?B?T2t5OHFVSWlyTG55WEMySElOUFJKdUtIaVpEMFRUbU1ub001ci9aRVlmQStv?= =?utf-8?B?cGhwbU9CMERqdVFGaHhNU1pUM0p3NXpHdWUzc005RW9xVHhRSGpMSmUzRjN2?= =?utf-8?B?M1pKYnVCVUlxZW5pTDhqUW5SQmJMclY1STNiZjFiL1NNbXk1aUhUSkdsYnNs?= =?utf-8?B?SzJtbkJ6ZFR6aWRLRm9Kc0pvRnc3b3FKN1JWNzZsREZVWDlYUUJ4RGRuNDI1?= =?utf-8?B?K056Y3AxZ2t5Mm9UN0R1SUJsRjdHRjJXMFR5WTBMT3ptVVFEVEhVbVp6aFg2?= =?utf-8?B?dnJHVi9pWFBBclFyOURWQVM4R25BPT0=?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(1800799024)(14060799003)(376014)(7416014)(36860700013)(13003099007)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GWR3Yf06H9x/NUrrEBXgUIRschq56GLeyHPHKukdHniDq294O6NFmAvCS8rtLt8xR3aGx/1i+UGS4iaNINO4wrrGx5K/MFqKj4gOtvKl5r7CpuILGv8G7D5GtLA6NIJQRckeLzRufhBzw10LXLZRpLO0nNXvnHNAL1KuolgkB8nRQ8/DglEfL8o1dLIJPXsTY4rE6If9QbhoEFaXtkKAhuqHszfRIdy2DGuTt6cGVNdJnd5VqK5MVbKQ4XK6/Vsg+AOD3AKykKgGsFHXQveigx5pOJHL/tmImnZOmd54fo04Ph9Ba5xesmKlrW/wq1Ia1gl3vmEcZCg97q0Og2IP/FakX6RQTNmBieXOC8wML0ALzaWy1uyuIfukPw84U7nPh8xHs6SPDPwt48ypPXBwi6T4hqPLHkMtjrEKPNLkHXEBdKH2Z+6dP8GtsEUekbhl X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2026 09:35:04.3221 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0a912d51-61ac-4f62-7133-08de623e586e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF0001E9C1.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10036 X-DKIM: signer='arm.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: 0.4 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.4 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: arm.com] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 4 Hello On 02/02/2026 05:09, Kuan-Wei Chiu wrote: > On Tue, Dec 02, 2025 at 09:26:19AM +0000, James Clark wrote: >> >> >> On 02/12/2025 8:26 am, Kuan-Wei Chiu wrote: >>> The cntr_val_show() function was intended to print the values of all >>> counters using a loop. However, due to a buffer overwrite issue with >>> sprintf(), it effectively only displayed the value of the last counter. >>> >>> The companion function, cntr_val_store(), allows users to modify a >>> specific counter selected by 'cntr_idx'. To maintain consistency >>> between read and write operations and to align with the ETM4x driver >>> behavior, modify cntr_val_show() to report only the value of the >>> currently selected counter. >>> >>> This change removes the loop and the "counter %d:" prefix, printing >>> only the hexadecimal value. It also adopts sysfs_emit() for standard >>> sysfs output formatting. >>> >>> Fixes: a939fc5a71ad ("coresight-etm: add CoreSight ETM/PTM driver") >>> Cc: stable@vger.kernel.org >>> Signed-off-by: Kuan-Wei Chiu >>> --- >>> Build test only. >>> >>> Changes in v3: >>> - Switch format specifier to %#x to include the 0x prefix. >>> - Add Cc stable >>> >>> v2: https://lore.kernel.org/lkml/20251201095228.1905489-1-visitorckw@gmail.com/ >>> >>> .../hwtracing/coresight/coresight-etm3x-sysfs.c | 15 ++++----------- >>> 1 file changed, 4 insertions(+), 11 deletions(-) >>> >>> diff --git a/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c >>> index 762109307b86..b3c67e96a82a 100644 >>> --- a/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c >>> +++ b/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c >>> @@ -717,26 +717,19 @@ static DEVICE_ATTR_RW(cntr_rld_event); >>> static ssize_t cntr_val_show(struct device *dev, >>> struct device_attribute *attr, char *buf) >>> { >>> - int i, ret = 0; >>> u32 val; >>> struct etm_drvdata *drvdata = dev_get_drvdata(dev->parent); >>> struct etm_config *config = &drvdata->config; >>> if (!coresight_get_mode(drvdata->csdev)) { >>> spin_lock(&drvdata->spinlock); >>> - for (i = 0; i < drvdata->nr_cntr; i++) >>> - ret += sprintf(buf, "counter %d: %x\n", >>> - i, config->cntr_val[i]); >>> + val = config->cntr_val[config->cntr_idx]; >>> spin_unlock(&drvdata->spinlock); >>> - return ret; >>> - } >>> - >>> - for (i = 0; i < drvdata->nr_cntr; i++) { >>> - val = etm_readl(drvdata, ETMCNTVRn(i)); >>> - ret += sprintf(buf, "counter %d: %x\n", i, val); >>> + } else { >>> + val = etm_readl(drvdata, ETMCNTVRn(config->cntr_idx)); >>> } >>> - return ret; >>> + return sysfs_emit(buf, "%#x\n", val); >>> } >>> static ssize_t cntr_val_store(struct device *dev, >> >> Reviewed-by: James Clark >> > Thanks for the review! > Is there anything else I need to do for this fix to land? Thanks for the patch, I will queue this for the next release (v7.1). Suzuki > > Regards, > Kuan-Wei > From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id UEvoMHdygGmrQzgAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:46:31 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:46:32 +0000 Received: from sea.lore.kernel.org ([172.234.253.10]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmqVr-0000000Fzk0-1bOe for hi@josie.lol; Mon, 02 Feb 2026 09:46:31 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 80AE7300D948 for ; Mon, 2 Feb 2026 09:42:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A39692D47EF; Mon, 2 Feb 2026 09:42:23 +0000 (UTC) X-Original-To: stable@vger.kernel.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3AF7E2C0F69; Mon, 2 Feb 2026 09:42:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770025343; cv=none; b=oA8NDuaiB5skFt2uA4PMR2vbOhfMrfqbFPn+PZVYK9TZ3xyaxdo0USJdjlPJwCcFJ8jqAh6DcxJ1lSlIk5rb13K5OhS+wLL6a0jd/7YE45Ke2Zmu1ZfZlz4/ISHu38Ob56e8G40o/CtonplYUJb6ZWOvCkTnqWMAjhuyiZW4is4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770025343; c=relaxed/simple; bh=0EVJlIC+o0CMbI6wpxWPH5wP7o2G8jsAT4dTlekGmPQ=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ZKbHz59kVDZQclW1/2eOD0IqYmGTFJGBczboeeW0gA4n0WAAGpTkyv5LX6/VJqQJk4MhC/lN82fRik7eOpaqv+LZOAY+qRM6Al7j0CNuELwOpxxilOjJ0U0JAxnCb3gs+2oQOCc+aurU9AhOmJwO4IMwZLmwpWegTVfJjXXYSdE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2B74C339; Mon, 2 Feb 2026 01:42:14 -0800 (PST) Received: from [10.57.95.78] (unknown [10.57.95.78]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4A8F83F740; Mon, 2 Feb 2026 01:42:19 -0800 (PST) Message-ID: <10088a12-332f-490e-9726-3015f99e264a@arm.com> Date: Mon, 2 Feb 2026 09:42:17 +0000 Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] arm64/mm: Reject memory removal that splits a kernel leaf mapping Content-Language: en-GB To: Anshuman Khandual , linux-arm-kernel@lists.infradead.org Cc: Catalin Marinas , Will Deacon , Yang Shi , Christoph Lameter , linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20260202042617.504183-1-anshuman.khandual@arm.com> <20260202042617.504183-3-anshuman.khandual@arm.com> From: Ryan Roberts In-Reply-To: <20260202042617.504183-3-anshuman.khandual@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.234.253.10 listed in list.dnswl.org] -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 5 On 02/02/2026 04:26, Anshuman Khandual wrote: > Linear and vmemmap mapings that get teared down during a memory hot remove > operation might contain leaf level entries on any page table level. If the > requested memory range's linear or vmemmap mappings falls within such leaf > entries, new mappings need to be created for the remaning memory mapped on > the leaf entry earlier, following standard break before make aka BBM rules. I think it would be good to mention that the kernel cannot tolerate BBM so remapping to fine grained leaves would not be possible on systems without BBML2_NOABORT. > > Currently memory hot remove operation does not perform such restructuring, > and so removing memory ranges that could split a kernel leaf level mapping > need to be rejected. Perhaps it is useful to mention that while memory_hotplug.c does appear to permit hot-unplugging arbitrary ranges of memory, the higher layers that drive memory_hotplug (e.g. ACPI, virtio, ...) all appear to treat memory as fixed size devices so it is impossible to hotunplug a different amount than was previously hotplugged, and so we should never see a rejection in practice, but adding the check makes us robust against a future change. > > Cc: Catalin Marinas > Cc: Will Deacon > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Closes: https://lore.kernel.org/all/aWZYXhrT6D2M-7-N@willie-the-truck/ > Fixes: bbd6ec605c0f ("arm64/mm: Enable memory hot remove") > Cc: stable@vger.kernel.org > Suggested-by: Ryan Roberts > Signed-off-by: Anshuman Khandual > --- > arch/arm64/mm/mmu.c | 126 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 126 insertions(+) > > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index 8ec8a287aaa1..9d59e10fb3de 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -2063,6 +2063,129 @@ void arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap) > __remove_pgd_mapping(swapper_pg_dir, __phys_to_virt(start), size); > } > > + > +static bool split_kernel_leaf_boundary(unsigned long addr) The name currently makes it sound like we are asking for the mapping to be split (we have existing functions to do this that are named similarly). Perhaps a better name would be addr_splits_leaf()? > +{ > + pgd_t *pgdp, pgd; > + p4d_t *p4dp, p4d; > + pud_t *pudp, pud; > + pmd_t *pmdp, pmd; > + pte_t *ptep, pte; > + > + /* > + * PGD: If addr is PGD aligned then addr already > + * describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, PGDIR_SIZE) == addr) > + return false; > + > + pgdp = pgd_offset_k(addr); > + pgd = pgdp_get(pgdp); > + if (!pgd_present(pgd)) > + return false; > + > + /* > + * P4D: If addr is P4D aligned then addr already > + * describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, P4D_SIZE) == addr) > + return false; > + > + p4dp = p4d_offset(pgdp, addr); > + p4d = p4dp_get(p4dp); > + if (!p4d_present(p4d)) > + return false; > + > + /* > + * PUD: If addr is PUD aligned then addr already > + * describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, PUD_SIZE) == addr) > + return false; > + > + pudp = pud_offset(p4dp, addr); > + pud = pudp_get(pudp); > + if (!pud_present(pud)) > + return false; > + > + if (pud_leaf(pud)) > + return true; > + > + /* > + * CONT_PMD: If addr is CONT_PMD aligned then > + * addr already describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, CONT_PMD_SIZE) == addr) > + return false; > + > + pmdp = pmd_offset(pudp, addr); > + pmd = pmdp_get(pmdp); > + if (!pmd_present(pmd)) > + return false; > + > + if (pmd_leaf(pmd) && pmd_cont(pmd)) > + return true; > + > + /* > + * PMD: If addr is PMD aligned then addr already > + * describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, PMD_SIZE) == addr) > + return false; > + > + if (pmd_leaf(pmd)) > + return true; > + > + /* > + * CONT_PTE: If addr is CONT_PTE aligned then addr > + * already describes a leaf boundary. > + */ > + if (ALIGN_DOWN(addr, CONT_PTE_SIZE) == addr) > + return false; > + > + ptep = pte_offset_kernel(pmdp, addr); > + pte = __ptep_get(ptep); > + if (!pte_present(pte)) > + return false; > + > + if (pte_valid(pte) && pte_cont(pte)) Why do you need pte_valid() here? You have already checked !pte_present(). Are you expecting a case of present but not valid (PTE_PRESENT_INVALID)? If so, do you need to consider that for the other levels too? (pmd_leaf() only checks pmd_present()). Personally I think you can just drop the pte_valid() check here. > + return true; > + > + if (ALIGN_DOWN(addr, PAGE_SIZE) == addr) > + return false; > + return true; > +} > + > +static bool can_unmap_without_split(unsigned long pfn, unsigned long nr_pages) > +{ > + unsigned long linear_start, linear_end, phys_start, phys_end; > + unsigned long vmemmap_size, vmemmap_start, vmemmap_end; nit: do we need all these variables. Perhaps just: unsigned long sz, start, end, phys_start, phys_end; are sufficient? > + > + /* Assert linear map edges do not split a leaf entry */ > + phys_start = PFN_PHYS(pfn); > + phys_end = phys_start + nr_pages * PAGE_SIZE; > + linear_start = __phys_to_virt(phys_start); > + linear_end = __phys_to_virt(phys_end); > + if (split_kernel_leaf_boundary(linear_start) || > + split_kernel_leaf_boundary(linear_end)) { > + pr_warn("[%lx %lx] splits a leaf entry in linear map\n", > + phys_start, phys_end); > + return false; > + } > + > + /* Assert vmemmap edges do not split a leaf entry */ > + vmemmap_size = nr_pages * sizeof(struct page); > + vmemmap_start = (unsigned long) pfn_to_page(pfn); nit: ^ I don't think we would normally have that space? > + vmemmap_end = vmemmap_start + vmemmap_size; > + if (split_kernel_leaf_boundary(vmemmap_start) || > + split_kernel_leaf_boundary(vmemmap_end)) { > + pr_warn("[%lx %lx] splits a leaf entry in vmemmap\n", > + phys_start, phys_end); > + return false; > + } > + return true; > +} > + > /* > * This memory hotplug notifier helps prevent boot memory from being > * inadvertently removed as it blocks pfn range offlining process in > @@ -2083,6 +2206,9 @@ static int prevent_bootmem_remove_notifier(struct notifier_block *nb, > if ((action != MEM_GOING_OFFLINE) && (action != MEM_OFFLINE)) > return NOTIFY_OK; > > + if (!can_unmap_without_split(pfn, arg->nr_pages)) > + return NOTIFY_BAD; > + Personally, I'd keep the bootmem check first and do this check after. That means an existing warning will not change. Thanks, Ryan > for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) { > unsigned long start = PFN_PHYS(pfn); > unsigned long end = start + (1UL << PA_SECTION_SHIFT); From - Mon Feb 02 10:00:12 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id mLNeKOFygGlqVDoAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 09:48:17 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 09:48:17 +0000 Received: from sto.lore.kernel.org ([172.232.135.74]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmqXX-0000000G2nd-3iSW for hi@josie.lol; Mon, 02 Feb 2026 09:48:17 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sto.lore.kernel.org (Postfix) with ESMTP id 06BD630058F9 for ; Mon, 2 Feb 2026 09:48:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B91F02DB788; Mon, 2 Feb 2026 09:48:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="qZcT4E4H" X-Original-To: linux-s390@vger.kernel.org Received: from out30-113.freemail.mail.aliyun.com (out30-113.freemail.mail.aliyun.com [115.124.30.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23B332DA763; Mon, 2 Feb 2026 09:48:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.113 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770025691; cv=none; b=Utzd7bm5ZPnwEqTZtxvrGmSR+n+IhYQNg45iE0v405GjRC3L8aqD1HCdtLfip2LG+k0ef5xRo8fdoGg/AJisvl93k8tihoxE9UAkM2gQ5p9adPc7/mbr/ySy+pmBY8pkoAWSILkHF5VhOzJRVKCxYekhnX+ONpjqgXxTvtjwtGc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770025691; c=relaxed/simple; bh=LbjHlQCc7ncHoZOH3c4BjPy5+hpYFDz6A/lSXLpvul8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=H693pPICrpLVxfukw3DSEGKyeXcDg3TpUuIfCUNvX2GTTrMEFxe570Qugh+9/3HkA2SPeqNaRQ+Q0Sp6DCVuJ6WV3+3uTMkinXNZZ9Dj94iGZXkTY/gxYZc+A3xSgmrrBMvZvX2gSAFLIdNzU7l53D/l4zaGq8xDQCkaCVoWjBM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=qZcT4E4H; arc=none smtp.client-ip=115.124.30.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1770025684; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=bgq7Uv6p4D7tQiyocvJOx1Hi6miE+Okp38OUb116VLc=; b=qZcT4E4H414+Y3Hk5noh3wrZo3UQ+80uXdpFugHdLVJ3nrz50YSNELsFWntWBlmzSq+/Zos/fcFXorBDfU2O54ZVDVDNaaSvIef/6qFjgxK5AC8j9wM9w7pniSegOdFfNXW29JUQ7ITMPSdCaSN92AlukaX71LhAA8JcTW79L7Q= Received: from j66a10360.sqa.eu95.tbsite.net(mailfrom:alibuda@linux.alibaba.com fp:SMTPD_---0WyLiSzk_1770025680 cluster:ay36) by smtp.aliyun-inc.com; Mon, 02 Feb 2026 17:48:04 +0800 From: "D. Wythe" To: "David S. Miller" , Dust Li , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Sidraya Jayagond , Wenjia Zhang Cc: Mahanta Jambigi , Simon Horman , Tony Lu , Wen Gu , linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, netdev@vger.kernel.org, oliver.yang@linux.alibaba.com, pasic@linux.ibm.com Subject: [PATCH RFC net-next] net/smc: transition to RDMA core CQ pooling Date: Mon, 2 Feb 2026 17:48:00 +0800 Message-ID: <20260202094800.30373-1-alibuda@linux.alibaba.com> X-Mailer: git-send-email 2.45.0 Precedence: bulk X-Mailing-List: linux-s390@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-DKIM: signer='linux.alibaba.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: -7.1 (-------) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (-7.1 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.232.135.74 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -7.5 USER_IN_DEF_DKIM_WL From: address is in the default DKIM welcome-list 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: -70 The current SMC-R implementation relies on global per-device CQs and manual polling within tasklets, which introduces severe scalability bottlenecks due to global lock contention and tasklet scheduling overhead, resulting in poor performance as concurrency increases. Refactor the completion handling to utilize the ib_cqe API and standard RDMA core CQ pooling. This transition provides several key advantages: 1. Multi-CQ: Shift from a single shared per-device CQ to multiple link-specific CQs via the CQ pool. This allows completion processing to be parallelized across multiple CPU cores, effectively eliminating the global CQ bottleneck. 2. Leverage DIM: Utilizing the standard CQ pool with IB_POLL_SOFTIRQ enables Dynamic Interrupt Moderation from the RDMA core, optimizing interrupt frequency and reducing CPU load under high pressure. 3. O(1) Context Retrieval: Replaces the expensive wr_id based lookup logic (e.g., smc_wr_tx_find_pending_index) with direct context retrieval using container_of() on the embedded ib_cqe. 4. Code Simplification: This refactoring results in a reduction of ~150 lines of code. It removes redundant sequence tracking, complex lookup helpers, and manual CQ management, significantly improving maintainability. Performance Test: redis-benchmark with max 32 connections per QP Data format: Requests Per Second (RPS), Percentage in brackets represents the gain/loss compared to TCP. | Clients | TCP | SMC (original) | SMC (cq_pool) | |---------|----------|---------------------|---------------------| | c = 1 | 24449 | 31172 (+27%) | 34039 (+39%) | | c = 2 | 46420 | 53216 (+14%) | 64391 (+38%) | | c = 16 | 159673 | 83668 (-48%) <-- | 216947 (+36%) | | c = 32 | 164956 | 97631 (-41%) <-- | 249376 (+51%) | | c = 64 | 166322 | 118192 (-29%) <-- | 249488 (+50%) | | c = 128 | 167700 | 121497 (-27%) <-- | 249480 (+48%) | | c = 256 | 175021 | 146109 (-16%) <-- | 240384 (+37%) | | c = 512 | 168987 | 101479 (-40%) <-- | 226634 (+34%) | The results demonstrate that this optimization effectively resolves the scalability bottleneck, with RPS increasing by over 110% at c=64 compared to the original implementation. Signed-off-by: D. Wythe --- net/smc/smc_core.c | 8 +- net/smc/smc_core.h | 16 ++- net/smc/smc_ib.c | 114 ++++++------------- net/smc/smc_ib.h | 5 - net/smc/smc_tx.c | 1 - net/smc/smc_wr.c | 267 ++++++++++++++++----------------------------- net/smc/smc_wr.h | 38 ++----- 7 files changed, 150 insertions(+), 299 deletions(-) diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index 8aca5dc54be7..9590c8aed3dd 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c @@ -815,17 +815,11 @@ int smcr_link_init(struct smc_link_group *lgr, struct smc_link *lnk, lnk->lgr = lgr; smc_lgr_hold(lgr); /* lgr_put in smcr_link_clear() */ lnk->link_idx = link_idx; - lnk->wr_rx_id_compl = 0; smc_ibdev_cnt_inc(lnk); smcr_copy_dev_info_to_link(lnk); atomic_set(&lnk->conn_cnt, 0); smc_llc_link_set_uid(lnk); INIT_WORK(&lnk->link_down_wrk, smc_link_down_work); - if (!lnk->smcibdev->initialized) { - rc = (int)smc_ib_setup_per_ibdev(lnk->smcibdev); - if (rc) - goto out; - } get_random_bytes(rndvec, sizeof(rndvec)); lnk->psn_initial = rndvec[0] + (rndvec[1] << 8) + (rndvec[2] << 16); @@ -1373,7 +1367,7 @@ void smcr_link_clear(struct smc_link *lnk, bool log) smc_llc_link_clear(lnk, log); smcr_buf_unmap_lgr(lnk); smcr_rtoken_clear_link(lnk); - smc_ib_modify_qp_error(lnk); + smc_wr_drain_qp(lnk); smc_wr_free_link(lnk); smc_ib_destroy_queue_pair(lnk); smc_ib_dealloc_protection_domain(lnk); diff --git a/net/smc/smc_core.h b/net/smc/smc_core.h index 5c18f08a4c8a..00468b7a279f 100644 --- a/net/smc/smc_core.h +++ b/net/smc/smc_core.h @@ -92,6 +92,12 @@ struct smc_rdma_wr { /* work requests per message struct ib_rdma_wr wr_tx_rdma[SMC_MAX_RDMA_WRITES]; }; +struct smc_ib_recv_wr { + struct ib_cqe cqe; + struct ib_recv_wr wr; + int index; +}; + #define SMC_LGR_ID_SIZE 4 struct smc_link { @@ -100,6 +106,8 @@ struct smc_link { struct ib_pd *roce_pd; /* IB protection domain, * unique for every RoCE QP */ + int nr_cqe; + struct ib_cq *ib_cq; struct ib_qp *roce_qp; /* IB queue pair */ struct ib_qp_attr qp_attr; /* IB queue pair attributes */ @@ -107,6 +115,7 @@ struct smc_link { struct ib_send_wr *wr_tx_ibs; /* WR send meta data */ struct ib_sge *wr_tx_sges; /* WR send gather meta data */ struct smc_rdma_sges *wr_tx_rdma_sges;/*RDMA WRITE gather meta data*/ + struct ib_cqe tx_rdma_cqe; /* CQE RDMA WRITE */ struct smc_rdma_wr *wr_tx_rdmas; /* WR RDMA WRITE */ struct smc_wr_tx_pend *wr_tx_pends; /* WR send waiting for CQE */ struct completion *wr_tx_compl; /* WR send CQE completion */ @@ -116,7 +125,6 @@ struct smc_link { struct smc_wr_tx_pend *wr_tx_v2_pend; /* WR send v2 waiting for CQE */ dma_addr_t wr_tx_dma_addr; /* DMA address of wr_tx_bufs */ dma_addr_t wr_tx_v2_dma_addr; /* DMA address of v2 tx buf*/ - atomic_long_t wr_tx_id; /* seq # of last sent WR */ unsigned long *wr_tx_mask; /* bit mask of used indexes */ u32 wr_tx_cnt; /* number of WR send buffers */ wait_queue_head_t wr_tx_wait; /* wait for free WR send buf */ @@ -126,7 +134,7 @@ struct smc_link { struct completion tx_ref_comp; u8 *wr_rx_bufs; /* WR recv payload buffers */ - struct ib_recv_wr *wr_rx_ibs; /* WR recv meta data */ + struct smc_ib_recv_wr *wr_rx_ibs; /* WR recv meta data */ struct ib_sge *wr_rx_sges; /* WR recv scatter meta data */ /* above three vectors have wr_rx_cnt elements and use the same index */ int wr_rx_sge_cnt; /* rx sge, V1 is 1, V2 is either 2 or 1 */ @@ -135,13 +143,11 @@ struct smc_link { */ dma_addr_t wr_rx_dma_addr; /* DMA address of wr_rx_bufs */ dma_addr_t wr_rx_v2_dma_addr; /* DMA address of v2 rx buf*/ - u64 wr_rx_id; /* seq # of last recv WR */ - u64 wr_rx_id_compl; /* seq # of last completed WR */ u32 wr_rx_cnt; /* number of WR recv buffers */ unsigned long wr_rx_tstamp; /* jiffies when last buf rx */ - wait_queue_head_t wr_rx_empty_wait; /* wait for RQ empty */ struct ib_reg_wr wr_reg; /* WR register memory region */ + struct ib_cqe wr_reg_cqe; wait_queue_head_t wr_reg_wait; /* wait for wr_reg result */ struct { struct percpu_ref wr_reg_refs; diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c index 67211d44a1db..77047ad7d452 100644 --- a/net/smc/smc_ib.c +++ b/net/smc/smc_ib.c @@ -112,15 +112,6 @@ int smc_ib_modify_qp_rts(struct smc_link *lnk) IB_QP_MAX_QP_RD_ATOMIC); } -int smc_ib_modify_qp_error(struct smc_link *lnk) -{ - struct ib_qp_attr qp_attr; - - memset(&qp_attr, 0, sizeof(qp_attr)); - qp_attr.qp_state = IB_QPS_ERR; - return ib_modify_qp(lnk->roce_qp, &qp_attr, IB_QP_STATE); -} - int smc_ib_ready_link(struct smc_link *lnk) { struct smc_link_group *lgr = smc_get_lgr(lnk); @@ -134,10 +125,7 @@ int smc_ib_ready_link(struct smc_link *lnk) if (rc) goto out; smc_wr_remember_qp_attr(lnk); - rc = ib_req_notify_cq(lnk->smcibdev->roce_cq_recv, - IB_CQ_SOLICITED_MASK); - if (rc) - goto out; + rc = smc_wr_rx_post_init(lnk); if (rc) goto out; @@ -658,38 +646,60 @@ void smc_ib_destroy_queue_pair(struct smc_link *lnk) if (lnk->roce_qp) ib_destroy_qp(lnk->roce_qp); lnk->roce_qp = NULL; + if (lnk->ib_cq) { + ib_cq_pool_put(lnk->ib_cq, lnk->nr_cqe); + lnk->ib_cq = NULL; + } } /* create a queue pair within the protection domain for a link */ int smc_ib_create_queue_pair(struct smc_link *lnk) { + int max_send_wr, max_recv_wr, rc; + struct ib_cq *cq; + + /* include unsolicited rdma_writes as well, + * there are max. 2 RDMA_WRITE per 1 WR_SEND. + * +1 for ib_drain_qp() + */ + max_send_wr = 3 * lnk->lgr->max_send_wr + 1; + max_recv_wr = lnk->lgr->max_recv_wr + 1; + + cq = ib_cq_pool_get(lnk->smcibdev->ibdev, max_send_wr + max_recv_wr, -1, + IB_POLL_SOFTIRQ); + + if (IS_ERR(cq)) { + rc = PTR_ERR(cq); + return rc; + } + struct ib_qp_init_attr qp_attr = { .event_handler = smc_ib_qp_event_handler, .qp_context = lnk, - .send_cq = lnk->smcibdev->roce_cq_send, - .recv_cq = lnk->smcibdev->roce_cq_recv, + .send_cq = cq, + .recv_cq = cq, .srq = NULL, .cap = { .max_send_sge = SMC_IB_MAX_SEND_SGE, .max_recv_sge = lnk->wr_rx_sge_cnt, + .max_send_wr = max_send_wr, + .max_recv_wr = max_recv_wr, .max_inline_data = 0, }, .sq_sig_type = IB_SIGNAL_REQ_WR, .qp_type = IB_QPT_RC, }; - int rc; - /* include unsolicited rdma_writes as well, - * there are max. 2 RDMA_WRITE per 1 WR_SEND - */ - qp_attr.cap.max_send_wr = 3 * lnk->lgr->max_send_wr; - qp_attr.cap.max_recv_wr = lnk->lgr->max_recv_wr; lnk->roce_qp = ib_create_qp(lnk->roce_pd, &qp_attr); rc = PTR_ERR_OR_ZERO(lnk->roce_qp); - if (IS_ERR(lnk->roce_qp)) + if (IS_ERR(lnk->roce_qp)) { lnk->roce_qp = NULL; - else + ib_cq_pool_put(cq, max_send_wr + max_recv_wr); + } else { smc_wr_remember_qp_attr(lnk); + lnk->nr_cqe = max_send_wr + max_recv_wr; + lnk->ib_cq = cq; + } return rc; } @@ -855,62 +865,6 @@ void smc_ib_buf_unmap_sg(struct smc_link *lnk, buf_slot->sgt[lnk->link_idx].sgl->dma_address = 0; } -long smc_ib_setup_per_ibdev(struct smc_ib_device *smcibdev) -{ - struct ib_cq_init_attr cqattr = { - .cqe = SMC_MAX_CQE, .comp_vector = 0 }; - int cqe_size_order, smc_order; - long rc; - - mutex_lock(&smcibdev->mutex); - rc = 0; - if (smcibdev->initialized) - goto out; - /* the calculated number of cq entries fits to mlx5 cq allocation */ - cqe_size_order = cache_line_size() == 128 ? 7 : 6; - smc_order = MAX_PAGE_ORDER - cqe_size_order; - if (SMC_MAX_CQE + 2 > (0x00000001 << smc_order) * PAGE_SIZE) - cqattr.cqe = (0x00000001 << smc_order) * PAGE_SIZE - 2; - smcibdev->roce_cq_send = ib_create_cq(smcibdev->ibdev, - smc_wr_tx_cq_handler, NULL, - smcibdev, &cqattr); - rc = PTR_ERR_OR_ZERO(smcibdev->roce_cq_send); - if (IS_ERR(smcibdev->roce_cq_send)) { - smcibdev->roce_cq_send = NULL; - goto out; - } - smcibdev->roce_cq_recv = ib_create_cq(smcibdev->ibdev, - smc_wr_rx_cq_handler, NULL, - smcibdev, &cqattr); - rc = PTR_ERR_OR_ZERO(smcibdev->roce_cq_recv); - if (IS_ERR(smcibdev->roce_cq_recv)) { - smcibdev->roce_cq_recv = NULL; - goto err; - } - smc_wr_add_dev(smcibdev); - smcibdev->initialized = 1; - goto out; - -err: - ib_destroy_cq(smcibdev->roce_cq_send); -out: - mutex_unlock(&smcibdev->mutex); - return rc; -} - -static void smc_ib_cleanup_per_ibdev(struct smc_ib_device *smcibdev) -{ - mutex_lock(&smcibdev->mutex); - if (!smcibdev->initialized) - goto out; - smcibdev->initialized = 0; - ib_destroy_cq(smcibdev->roce_cq_recv); - ib_destroy_cq(smcibdev->roce_cq_send); - smc_wr_remove_dev(smcibdev); -out: - mutex_unlock(&smcibdev->mutex); -} - static struct ib_client smc_ib_client; static void smc_copy_netdev_ifindex(struct smc_ib_device *smcibdev, int port) @@ -969,7 +923,6 @@ static int smc_ib_add_dev(struct ib_device *ibdev) INIT_WORK(&smcibdev->port_event_work, smc_ib_port_event_work); atomic_set(&smcibdev->lnk_cnt, 0); init_waitqueue_head(&smcibdev->lnks_deleted); - mutex_init(&smcibdev->mutex); mutex_lock(&smc_ib_devices.mutex); list_add_tail(&smcibdev->list, &smc_ib_devices.list); mutex_unlock(&smc_ib_devices.mutex); @@ -1018,7 +971,6 @@ static void smc_ib_remove_dev(struct ib_device *ibdev, void *client_data) pr_warn_ratelimited("smc: removing ib device %s\n", smcibdev->ibdev->name); smc_smcr_terminate_all(smcibdev); - smc_ib_cleanup_per_ibdev(smcibdev); ib_unregister_event_handler(&smcibdev->event_handler); cancel_work_sync(&smcibdev->port_event_work); kfree(smcibdev); diff --git a/net/smc/smc_ib.h b/net/smc/smc_ib.h index ef8ac2b7546d..c5a0d773b73f 100644 --- a/net/smc/smc_ib.h +++ b/net/smc/smc_ib.h @@ -37,10 +37,6 @@ struct smc_ib_device { /* ib-device infos for smc */ struct ib_device *ibdev; struct ib_port_attr pattr[SMC_MAX_PORTS]; /* ib dev. port attrs */ struct ib_event_handler event_handler; /* global ib_event handler */ - struct ib_cq *roce_cq_send; /* send completion queue */ - struct ib_cq *roce_cq_recv; /* recv completion queue */ - struct tasklet_struct send_tasklet; /* called by send cq handler */ - struct tasklet_struct recv_tasklet; /* called by recv cq handler */ char mac[SMC_MAX_PORTS][ETH_ALEN]; /* mac address per port*/ u8 pnetid[SMC_MAX_PORTS][SMC_MAX_PNETID_LEN]; @@ -96,7 +92,6 @@ void smc_ib_destroy_queue_pair(struct smc_link *lnk); int smc_ib_create_queue_pair(struct smc_link *lnk); int smc_ib_ready_link(struct smc_link *lnk); int smc_ib_modify_qp_rts(struct smc_link *lnk); -int smc_ib_modify_qp_error(struct smc_link *lnk); long smc_ib_setup_per_ibdev(struct smc_ib_device *smcibdev); int smc_ib_get_memory_region(struct ib_pd *pd, int access_flags, struct smc_buf_desc *buf_slot, u8 link_idx); diff --git a/net/smc/smc_tx.c b/net/smc/smc_tx.c index 3144b4b1fe29..d301df9ed58b 100644 --- a/net/smc/smc_tx.c +++ b/net/smc/smc_tx.c @@ -321,7 +321,6 @@ static int smc_tx_rdma_write(struct smc_connection *conn, int peer_rmbe_offset, struct smc_link *link = conn->lnk; int rc; - rdma_wr->wr.wr_id = smc_wr_tx_get_next_wr_id(link); rdma_wr->wr.num_sge = num_sges; rdma_wr->remote_addr = lgr->rtokens[conn->rtoken_idx][link->link_idx].dma_addr + diff --git a/net/smc/smc_wr.c b/net/smc/smc_wr.c index 5feafa98ab1a..3a361aa020ab 100644 --- a/net/smc/smc_wr.c +++ b/net/smc/smc_wr.c @@ -38,7 +38,7 @@ static DEFINE_HASHTABLE(smc_wr_rx_hash, SMC_WR_RX_HASH_BITS); static DEFINE_SPINLOCK(smc_wr_rx_hash_lock); struct smc_wr_tx_pend { /* control data for a pending send request */ - u64 wr_id; /* work request id sent */ + struct ib_cqe cqe; smc_wr_tx_handler handler; enum ib_wc_status wc_status; /* CQE status */ struct smc_link *link; @@ -63,62 +63,51 @@ void smc_wr_tx_wait_no_pending_sends(struct smc_link *link) wait_event(link->wr_tx_wait, !smc_wr_is_tx_pend(link)); } -static inline int smc_wr_tx_find_pending_index(struct smc_link *link, u64 wr_id) +static void smc_wr_tx_rdma_process_cqe(struct ib_cq *cq, struct ib_wc *wc) { - u32 i; + struct smc_link *link = wc->qp->qp_context; - for (i = 0; i < link->wr_tx_cnt; i++) { - if (link->wr_tx_pends[i].wr_id == wr_id) - return i; - } - return link->wr_tx_cnt; + /* terminate link */ + if (unlikely(wc->status)) + smcr_link_down_cond_sched(link); +} + +static void smc_wr_reg_process_cqe(struct ib_cq *cq, struct ib_wc *wc) +{ + struct smc_link *link = wc->qp->qp_context; + + if (wc->status) + link->wr_reg_state = FAILED; + else + link->wr_reg_state = CONFIRMED; + smc_wr_wakeup_reg_wait(link); } -static inline void smc_wr_tx_process_cqe(struct ib_wc *wc) +static void smc_wr_tx_process_cqe(struct ib_cq *cq, struct ib_wc *wc) { - struct smc_wr_tx_pend pnd_snd; + struct smc_wr_tx_pend *tx_pend, pnd_snd; struct smc_link *link; u32 pnd_snd_idx; link = wc->qp->qp_context; - if (wc->opcode == IB_WC_REG_MR) { - if (wc->status) - link->wr_reg_state = FAILED; - else - link->wr_reg_state = CONFIRMED; - smc_wr_wakeup_reg_wait(link); - return; - } + tx_pend = container_of(wc->wr_cqe, struct smc_wr_tx_pend, cqe); + pnd_snd_idx = tx_pend->idx; + + tx_pend->wc_status = wc->status; + memcpy(&pnd_snd, tx_pend, sizeof(pnd_snd)); - pnd_snd_idx = smc_wr_tx_find_pending_index(link, wc->wr_id); if (pnd_snd_idx == link->wr_tx_cnt) { - if (link->lgr->smc_version != SMC_V2 || - link->wr_tx_v2_pend->wr_id != wc->wr_id) - return; - link->wr_tx_v2_pend->wc_status = wc->status; - memcpy(&pnd_snd, link->wr_tx_v2_pend, sizeof(pnd_snd)); - /* clear the full struct smc_wr_tx_pend including .priv */ - memset(link->wr_tx_v2_pend, 0, - sizeof(*link->wr_tx_v2_pend)); - memset(link->lgr->wr_tx_buf_v2, 0, - sizeof(*link->lgr->wr_tx_buf_v2)); + memset(link->lgr->wr_tx_buf_v2, 0, sizeof(*link->lgr->wr_tx_buf_v2)); } else { - link->wr_tx_pends[pnd_snd_idx].wc_status = wc->status; - if (link->wr_tx_pends[pnd_snd_idx].compl_requested) + if (tx_pend->compl_requested) complete(&link->wr_tx_compl[pnd_snd_idx]); - memcpy(&pnd_snd, &link->wr_tx_pends[pnd_snd_idx], - sizeof(pnd_snd)); - /* clear the full struct smc_wr_tx_pend including .priv */ - memset(&link->wr_tx_pends[pnd_snd_idx], 0, - sizeof(link->wr_tx_pends[pnd_snd_idx])); - memset(&link->wr_tx_bufs[pnd_snd_idx], 0, - sizeof(link->wr_tx_bufs[pnd_snd_idx])); + memset(&link->wr_tx_bufs[tx_pend->idx], 0, sizeof(link->wr_tx_bufs[tx_pend->idx])); if (!test_and_clear_bit(pnd_snd_idx, link->wr_tx_mask)) return; } - if (wc->status) { + if (unlikely(wc->status)) { if (link->lgr->smc_version == SMC_V2) { memset(link->wr_tx_v2_pend, 0, sizeof(*link->wr_tx_v2_pend)); @@ -128,44 +117,12 @@ static inline void smc_wr_tx_process_cqe(struct ib_wc *wc) /* terminate link */ smcr_link_down_cond_sched(link); } + if (pnd_snd.handler) pnd_snd.handler(&pnd_snd.priv, link, wc->status); wake_up(&link->wr_tx_wait); } -static void smc_wr_tx_tasklet_fn(struct tasklet_struct *t) -{ - struct smc_ib_device *dev = from_tasklet(dev, t, send_tasklet); - struct ib_wc wc[SMC_WR_MAX_POLL_CQE]; - int i = 0, rc; - int polled = 0; - -again: - polled++; - do { - memset(&wc, 0, sizeof(wc)); - rc = ib_poll_cq(dev->roce_cq_send, SMC_WR_MAX_POLL_CQE, wc); - if (polled == 1) { - ib_req_notify_cq(dev->roce_cq_send, - IB_CQ_NEXT_COMP | - IB_CQ_REPORT_MISSED_EVENTS); - } - if (!rc) - break; - for (i = 0; i < rc; i++) - smc_wr_tx_process_cqe(&wc[i]); - } while (rc > 0); - if (polled == 1) - goto again; -} - -void smc_wr_tx_cq_handler(struct ib_cq *ib_cq, void *cq_context) -{ - struct smc_ib_device *dev = (struct smc_ib_device *)cq_context; - - tasklet_schedule(&dev->send_tasklet); -} - /*---------------------------- request submission ---------------------------*/ static inline int smc_wr_tx_get_free_slot_index(struct smc_link *link, u32 *idx) @@ -202,7 +159,6 @@ int smc_wr_tx_get_free_slot(struct smc_link *link, struct smc_wr_tx_pend *wr_pend; u32 idx = link->wr_tx_cnt; struct ib_send_wr *wr_ib; - u64 wr_id; int rc; *wr_buf = NULL; @@ -226,14 +182,13 @@ int smc_wr_tx_get_free_slot(struct smc_link *link, if (idx == link->wr_tx_cnt) return -EPIPE; } - wr_id = smc_wr_tx_get_next_wr_id(link); + wr_pend = &link->wr_tx_pends[idx]; - wr_pend->wr_id = wr_id; wr_pend->handler = handler; wr_pend->link = link; wr_pend->idx = idx; wr_ib = &link->wr_tx_ibs[idx]; - wr_ib->wr_id = wr_id; + wr_ib->wr_cqe = &wr_pend->cqe; *wr_buf = &link->wr_tx_bufs[idx]; if (wr_rdma_buf) *wr_rdma_buf = &link->wr_tx_rdmas[idx]; @@ -248,21 +203,18 @@ int smc_wr_tx_get_v2_slot(struct smc_link *link, { struct smc_wr_tx_pend *wr_pend; struct ib_send_wr *wr_ib; - u64 wr_id; if (link->wr_tx_v2_pend->idx == link->wr_tx_cnt) return -EBUSY; *wr_buf = NULL; *wr_pend_priv = NULL; - wr_id = smc_wr_tx_get_next_wr_id(link); wr_pend = link->wr_tx_v2_pend; - wr_pend->wr_id = wr_id; wr_pend->handler = handler; wr_pend->link = link; wr_pend->idx = link->wr_tx_cnt; wr_ib = link->wr_tx_v2_ib; - wr_ib->wr_id = wr_id; + wr_ib->wr_cqe = &wr_pend->cqe; *wr_buf = link->lgr->wr_tx_buf_v2; *wr_pend_priv = &wr_pend->priv; return 0; @@ -306,8 +258,6 @@ int smc_wr_tx_send(struct smc_link *link, struct smc_wr_tx_pend_priv *priv) struct smc_wr_tx_pend *pend; int rc; - ib_req_notify_cq(link->smcibdev->roce_cq_send, - IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); pend = container_of(priv, struct smc_wr_tx_pend, priv); rc = ib_post_send(link->roce_qp, &link->wr_tx_ibs[pend->idx], NULL); if (rc) { @@ -323,8 +273,6 @@ int smc_wr_tx_v2_send(struct smc_link *link, struct smc_wr_tx_pend_priv *priv, int rc; link->wr_tx_v2_ib->sg_list[0].length = len; - ib_req_notify_cq(link->smcibdev->roce_cq_send, - IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); rc = ib_post_send(link->roce_qp, link->wr_tx_v2_ib, NULL); if (rc) { smc_wr_tx_put_slot(link, priv); @@ -367,10 +315,7 @@ int smc_wr_reg_send(struct smc_link *link, struct ib_mr *mr) { int rc; - ib_req_notify_cq(link->smcibdev->roce_cq_send, - IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); link->wr_reg_state = POSTED; - link->wr_reg.wr.wr_id = (u64)(uintptr_t)mr; link->wr_reg.mr = mr; link->wr_reg.key = mr->rkey; rc = ib_post_send(link->roce_qp, &link->wr_reg.wr, NULL); @@ -431,94 +376,76 @@ static inline void smc_wr_rx_demultiplex(struct ib_wc *wc) { struct smc_link *link = (struct smc_link *)wc->qp->qp_context; struct smc_wr_rx_handler *handler; + struct smc_ib_recv_wr *recv_wr; struct smc_wr_rx_hdr *wr_rx; - u64 temp_wr_id; - u32 index; if (wc->byte_len < sizeof(*wr_rx)) return; /* short message */ - temp_wr_id = wc->wr_id; - index = do_div(temp_wr_id, link->wr_rx_cnt); - wr_rx = (struct smc_wr_rx_hdr *)(link->wr_rx_bufs + index * link->wr_rx_buflen); + + recv_wr = container_of(wc->wr_cqe, struct smc_ib_recv_wr, cqe); + + wr_rx = (struct smc_wr_rx_hdr *)(link->wr_rx_bufs + recv_wr->index * link->wr_rx_buflen); hash_for_each_possible(smc_wr_rx_hash, handler, list, wr_rx->type) { if (handler->type == wr_rx->type) handler->handler(wc, wr_rx); } } -static inline void smc_wr_rx_process_cqes(struct ib_wc wc[], int num) +static void smc_wr_rx_process_cqe(struct ib_cq *cq, struct ib_wc *wc) { - struct smc_link *link; - int i; - - for (i = 0; i < num; i++) { - link = wc[i].qp->qp_context; - link->wr_rx_id_compl = wc[i].wr_id; - if (wc[i].status == IB_WC_SUCCESS) { - link->wr_rx_tstamp = jiffies; - smc_wr_rx_demultiplex(&wc[i]); - smc_wr_rx_post(link); /* refill WR RX */ - } else { - /* handle status errors */ - switch (wc[i].status) { - case IB_WC_RETRY_EXC_ERR: - case IB_WC_RNR_RETRY_EXC_ERR: - case IB_WC_WR_FLUSH_ERR: - smcr_link_down_cond_sched(link); - if (link->wr_rx_id_compl == link->wr_rx_id) - wake_up(&link->wr_rx_empty_wait); - break; - default: - smc_wr_rx_post(link); /* refill WR RX */ - break; - } + struct smc_link *link = wc->qp->qp_context; + + if (wc->status == IB_WC_SUCCESS) { + link->wr_rx_tstamp = jiffies; + smc_wr_rx_demultiplex(wc); + smc_wr_rx_post(link, wc->wr_cqe); /* refill WR RX */ + } else { + /* handle status errors */ + switch (wc->status) { + case IB_WC_RETRY_EXC_ERR: + case IB_WC_RNR_RETRY_EXC_ERR: + case IB_WC_WR_FLUSH_ERR: + smcr_link_down_cond_sched(link); + break; + default: + smc_wr_rx_post(link, wc->wr_cqe); /* refill WR RX */ + break; } } } -static void smc_wr_rx_tasklet_fn(struct tasklet_struct *t) +int smc_wr_rx_post_init(struct smc_link *link) { - struct smc_ib_device *dev = from_tasklet(dev, t, recv_tasklet); - struct ib_wc wc[SMC_WR_MAX_POLL_CQE]; - int polled = 0; - int rc; + u32 i; + int rc = 0; -again: - polled++; - do { - memset(&wc, 0, sizeof(wc)); - rc = ib_poll_cq(dev->roce_cq_recv, SMC_WR_MAX_POLL_CQE, wc); - if (polled == 1) { - ib_req_notify_cq(dev->roce_cq_recv, - IB_CQ_SOLICITED_MASK - | IB_CQ_REPORT_MISSED_EVENTS); - } - if (!rc) - break; - smc_wr_rx_process_cqes(&wc[0], rc); - } while (rc > 0); - if (polled == 1) - goto again; + for (i = 0; i < link->wr_rx_cnt; i++) + rc = smc_wr_rx_post(link, &link->wr_rx_ibs[i].cqe); + return rc; } -void smc_wr_rx_cq_handler(struct ib_cq *ib_cq, void *cq_context) -{ - struct smc_ib_device *dev = (struct smc_ib_device *)cq_context; +/***************************** init, exit, misc ******************************/ + - tasklet_schedule(&dev->recv_tasklet); +static inline void smc_wr_reg_init_cqe(struct ib_cqe *cqe) +{ + cqe->done = smc_wr_reg_process_cqe; } -int smc_wr_rx_post_init(struct smc_link *link) +static inline void smc_wr_tx_init_cqe(struct ib_cqe *cqe) { - u32 i; - int rc = 0; + cqe->done = smc_wr_tx_process_cqe; +} - for (i = 0; i < link->wr_rx_cnt; i++) - rc = smc_wr_rx_post(link); - return rc; +static inline void smc_wr_rx_init_cqe(struct ib_cqe *cqe) +{ + cqe->done = smc_wr_rx_process_cqe; } -/***************************** init, exit, misc ******************************/ +static inline void smc_wr_tx_rdma_init_cqe(struct ib_cqe *cqe) +{ + cqe->done = smc_wr_tx_rdma_process_cqe; +} void smc_wr_remember_qp_attr(struct smc_link *lnk) { @@ -548,9 +475,9 @@ void smc_wr_remember_qp_attr(struct smc_link *lnk) &init_attr); lnk->wr_tx_cnt = min_t(size_t, lnk->max_send_wr, - lnk->qp_attr.cap.max_send_wr); + lnk->qp_attr.cap.max_send_wr - 1); lnk->wr_rx_cnt = min_t(size_t, lnk->max_recv_wr, - lnk->qp_attr.cap.max_recv_wr); + lnk->qp_attr.cap.max_recv_wr - 1); } static void smc_wr_init_sge(struct smc_link *lnk) @@ -585,6 +512,8 @@ static void smc_wr_init_sge(struct smc_link *lnk) lnk->wr_tx_rdma_sges[i].tx_rdma_sge[0].wr_tx_rdma_sge; lnk->wr_tx_rdmas[i].wr_tx_rdma[1].wr.sg_list = lnk->wr_tx_rdma_sges[i].tx_rdma_sge[1].wr_tx_rdma_sge; + lnk->wr_tx_rdmas[i].wr_tx_rdma[0].wr.wr_cqe = &lnk->tx_rdma_cqe; + lnk->wr_tx_rdmas[i].wr_tx_rdma[1].wr.wr_cqe = &lnk->tx_rdma_cqe; } if (lnk->lgr->smc_version == SMC_V2) { @@ -622,10 +551,13 @@ static void smc_wr_init_sge(struct smc_link *lnk) lnk->wr_rx_sges[x + 1].lkey = lnk->roce_pd->local_dma_lkey; } - lnk->wr_rx_ibs[i].next = NULL; - lnk->wr_rx_ibs[i].sg_list = &lnk->wr_rx_sges[x]; - lnk->wr_rx_ibs[i].num_sge = lnk->wr_rx_sge_cnt; + lnk->wr_rx_ibs[i].wr.next = NULL; + lnk->wr_rx_ibs[i].wr.sg_list = &lnk->wr_rx_sges[x]; + lnk->wr_rx_ibs[i].wr.num_sge = lnk->wr_rx_sge_cnt; } + + smc_wr_reg_init_cqe(&lnk->wr_reg_cqe); + lnk->wr_reg.wr.wr_cqe = &lnk->wr_reg_cqe; lnk->wr_reg.wr.next = NULL; lnk->wr_reg.wr.num_sge = 0; lnk->wr_reg.wr.send_flags = IB_SEND_SIGNALED; @@ -641,7 +573,6 @@ void smc_wr_free_link(struct smc_link *lnk) return; ibdev = lnk->smcibdev->ibdev; - smc_wr_drain_cq(lnk); smc_wr_wakeup_reg_wait(lnk); smc_wr_wakeup_tx_wait(lnk); @@ -758,11 +689,19 @@ int smc_wr_alloc_link_mem(struct smc_link *link) GFP_KERNEL); if (!link->wr_rx_ibs) goto no_mem_wr_tx_ibs; + /* init wr_rx_ibs cqe */ + for (int i = 0; i < link->max_recv_wr; i++) { + smc_wr_rx_init_cqe(&link->wr_rx_ibs[i].cqe); + link->wr_rx_ibs[i].wr.wr_cqe = &link->wr_rx_ibs[i].cqe; + link->wr_rx_ibs[i].index = i; + } link->wr_tx_rdmas = kcalloc(link->max_send_wr, sizeof(link->wr_tx_rdmas[0]), GFP_KERNEL); if (!link->wr_tx_rdmas) goto no_mem_wr_rx_ibs; + + smc_wr_tx_rdma_init_cqe(&link->tx_rdma_cqe); link->wr_tx_rdma_sges = kcalloc(link->max_send_wr, sizeof(link->wr_tx_rdma_sges[0]), GFP_KERNEL); @@ -785,6 +724,8 @@ int smc_wr_alloc_link_mem(struct smc_link *link) GFP_KERNEL); if (!link->wr_tx_pends) goto no_mem_wr_tx_mask; + for (int i = 0; i < link->max_send_wr; i++) + smc_wr_tx_init_cqe(&link->wr_tx_pends[i].cqe); link->wr_tx_compl = kcalloc(link->max_send_wr, sizeof(link->wr_tx_compl[0]), GFP_KERNEL); @@ -804,6 +745,7 @@ int smc_wr_alloc_link_mem(struct smc_link *link) GFP_KERNEL); if (!link->wr_tx_v2_pend) goto no_mem_v2_sge; + smc_wr_tx_init_cqe(&link->wr_tx_v2_pend->cqe); } return 0; @@ -837,18 +779,6 @@ int smc_wr_alloc_link_mem(struct smc_link *link) return -ENOMEM; } -void smc_wr_remove_dev(struct smc_ib_device *smcibdev) -{ - tasklet_kill(&smcibdev->recv_tasklet); - tasklet_kill(&smcibdev->send_tasklet); -} - -void smc_wr_add_dev(struct smc_ib_device *smcibdev) -{ - tasklet_setup(&smcibdev->recv_tasklet, smc_wr_rx_tasklet_fn); - tasklet_setup(&smcibdev->send_tasklet, smc_wr_tx_tasklet_fn); -} - static void smcr_wr_tx_refs_free(struct percpu_ref *ref) { struct smc_link *lnk = container_of(ref, struct smc_link, wr_tx_refs); @@ -868,8 +798,6 @@ int smc_wr_create_link(struct smc_link *lnk) struct ib_device *ibdev = lnk->smcibdev->ibdev; int rc = 0; - smc_wr_tx_set_wr_id(&lnk->wr_tx_id, 0); - lnk->wr_rx_id = 0; lnk->wr_rx_dma_addr = ib_dma_map_single( ibdev, lnk->wr_rx_bufs, lnk->wr_rx_buflen * lnk->wr_rx_cnt, DMA_FROM_DEVICE); @@ -917,7 +845,6 @@ int smc_wr_create_link(struct smc_link *lnk) if (rc) goto cancel_ref; init_completion(&lnk->reg_ref_comp); - init_waitqueue_head(&lnk->wr_rx_empty_wait); return rc; cancel_ref: diff --git a/net/smc/smc_wr.h b/net/smc/smc_wr.h index aa4533af9122..4268dfcd84d3 100644 --- a/net/smc/smc_wr.h +++ b/net/smc/smc_wr.h @@ -44,19 +44,6 @@ struct smc_wr_rx_handler { u8 type; }; -/* Only used by RDMA write WRs. - * All other WRs (CDC/LLC) use smc_wr_tx_send handling WR_ID implicitly - */ -static inline long smc_wr_tx_get_next_wr_id(struct smc_link *link) -{ - return atomic_long_inc_return(&link->wr_tx_id); -} - -static inline void smc_wr_tx_set_wr_id(atomic_long_t *wr_tx_id, long val) -{ - atomic_long_set(wr_tx_id, val); -} - static inline bool smc_wr_tx_link_hold(struct smc_link *link) { if (!smc_link_sendable(link)) @@ -70,9 +57,10 @@ static inline void smc_wr_tx_link_put(struct smc_link *link) percpu_ref_put(&link->wr_tx_refs); } -static inline void smc_wr_drain_cq(struct smc_link *lnk) +static inline void smc_wr_drain_qp(struct smc_link *lnk) { - wait_event(lnk->wr_rx_empty_wait, lnk->wr_rx_id_compl == lnk->wr_rx_id); + if (lnk->qp_attr.cur_qp_state != IB_QPS_RESET) + ib_drain_qp(lnk->roce_qp); } static inline void smc_wr_wakeup_tx_wait(struct smc_link *lnk) @@ -86,18 +74,12 @@ static inline void smc_wr_wakeup_reg_wait(struct smc_link *lnk) } /* post a new receive work request to fill a completed old work request entry */ -static inline int smc_wr_rx_post(struct smc_link *link) +static inline int smc_wr_rx_post(struct smc_link *link, struct ib_cqe *cqe) { - int rc; - u64 wr_id, temp_wr_id; - u32 index; - - wr_id = ++link->wr_rx_id; /* tasklet context, thus not atomic */ - temp_wr_id = wr_id; - index = do_div(temp_wr_id, link->wr_rx_cnt); - link->wr_rx_ibs[index].wr_id = wr_id; - rc = ib_post_recv(link->roce_qp, &link->wr_rx_ibs[index], NULL); - return rc; + struct smc_ib_recv_wr *recv_wr; + + recv_wr = container_of(cqe, struct smc_ib_recv_wr, cqe); + return ib_post_recv(link->roce_qp, &recv_wr->wr, NULL); } int smc_wr_create_link(struct smc_link *lnk); @@ -107,8 +89,6 @@ void smc_wr_free_link(struct smc_link *lnk); void smc_wr_free_link_mem(struct smc_link *lnk); void smc_wr_free_lgr_mem(struct smc_link_group *lgr); void smc_wr_remember_qp_attr(struct smc_link *lnk); -void smc_wr_remove_dev(struct smc_ib_device *smcibdev); -void smc_wr_add_dev(struct smc_ib_device *smcibdev); int smc_wr_tx_get_free_slot(struct smc_link *link, smc_wr_tx_handler handler, struct smc_wr_buf **wr_buf, @@ -126,12 +106,10 @@ int smc_wr_tx_v2_send(struct smc_link *link, struct smc_wr_tx_pend_priv *priv, int len); int smc_wr_tx_send_wait(struct smc_link *link, struct smc_wr_tx_pend_priv *priv, unsigned long timeout); -void smc_wr_tx_cq_handler(struct ib_cq *ib_cq, void *cq_context); void smc_wr_tx_wait_no_pending_sends(struct smc_link *link); int smc_wr_rx_register_handler(struct smc_wr_rx_handler *handler); int smc_wr_rx_post_init(struct smc_link *link); -void smc_wr_rx_cq_handler(struct ib_cq *ib_cq, void *cq_context); int smc_wr_reg_send(struct smc_link *link, struct ib_mr *mr); #endif /* SMC_WR_H */ -- 2.45.0 From - Mon Feb 02 10:02:01 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id cOreJRV2gGlaozsAYBR5ng (envelope-from ) for ; Mon, 02 Feb 2026 10:01:57 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 02 Feb 2026 10:01:57 +0000 Received: from tor.lore.kernel.org ([172.105.105.114]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vmqkn-0000000GRM8-1Uiv for hi@josie.lol; Mon, 02 Feb 2026 10:01:57 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id AC92E30160C4 for ; Mon, 2 Feb 2026 10:01:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 317EC2E36F3; Mon, 2 Feb 2026 10:01:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b="WthYmqm1" X-Original-To: stable@vger.kernel.org Received: from jpms-ob02.noc.sony.co.jp (jpms-ob02.noc.sony.co.jp [211.125.140.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BF8913DDA4; Mon, 2 Feb 2026 10:01:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.125.140.165 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770026511; cv=none; b=fxAYiT+igBKWcTpLh+k37x3AHMx9NJS4l4HXFfhTys9gbDmDfMFFDf8/7MOGvg2E9Yrfh2OlBGd7ENOCOT/ABP4yxOtLiUiM8WQ4XzUSXnxWhgcVXtBUiulKA6qYA82oK30l9mp6hb2No5B+J/Q8RINhz6iy7q0rStMDkxiw2Vo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770026511; c=relaxed/simple; bh=rciqWe9MknIhKucUK+4wbzClj9FvwHeXsn6kPpt+wM8=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=CjEol7uscSrBu/Fn883/DfSD2IVkr0LfT1A4bygIAFgwkeJHQAeMORCjqFEpWsZkxoWTAC6g39C4E5/ucpWB9GFZIf+LDn/mAlhhekC/6Pyhb3iiWTmvV4maMB5fSGqAD/0Pnb8VWyOfhUQ78aSEKTWQ0dpOQJ2zzFOdevrwvYc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com; spf=pass smtp.mailfrom=sony.com; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b=WthYmqm1; arc=none smtp.client-ip=211.125.140.165 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sony.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; s=s1jp; t=1770026509; x=1801562509; h=from:subject:date:message-id:mime-version: content-transfer-encoding:to:cc; bh=9aqqCS44lWCHB49Zm7J55r5rkQXnOnuoUWB3fHL0bvM=; b=WthYmqm18NcKRaulODHiMrXwGk3KNmOKbApGsp+aHd/mAzUUanpb2H8a yMcqfdsJlcTu5MnszvUuh0csC3XBtbZEp5j4anZFRIKP4Lc/EMRScPGaO 3/0Y+DplUVZrK9huDVcZKw5TyrpyjIC4nGeE2vM2hGV6kK+oHqImMJVYa zyNVPmTUbQ8DOKlzU+GuOAgBJ7tOc2xODkLD/NgZL5E7MH9DRQe0aKoTK ec1JfmUVIV+qix/aM3Nud5bihiFYlwJ4JG\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":34,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-31","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"98de2378-fc94-4cf1-abe0-236532f0f103","timestamp":"2026-03-06T19:41:32.662Z"} {"parentUuid":"98de2378-fc94-4cf1-abe0-236532f0f103","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":35,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-32","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"d476ffa8-cd79-400c-9ceb-88828eb928e2","timestamp":"2026-03-06T19:41:33.663Z"} {"parentUuid":"d476ffa8-cd79-400c-9ceb-88828eb928e2","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":36,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-33","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"42caadf6-7b08-4d49-8e8f-0d7e8d59050d","timestamp":"2026-03-06T19:41:34.663Z"} {"parentUuid":"42caadf6-7b08-4d49-8e8f-0d7e8d59050d","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":37,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-34","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"b79135f8-9190-428d-9426-6074423df6a6","timestamp":"2026-03-06T19:41:35.664Z"} {"parentUuid":"b79135f8-9190-428d-9426-6074423df6a6","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":38,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-35","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"fa297bcf-89c1-41fb-9dbf-50229c22358c","timestamp":"2026-03-06T19:41:36.664Z"} {"parentUuid":"fa297bcf-89c1-41fb-9dbf-50229c22358c","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":39,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-36","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"af7b326a-08d6-43bf-aaca-b568bb31c70e","timestamp":"2026-03-06T19:41:37.665Z"} {"parentUuid":"af7b326a-08d6-43bf-aaca-b568bb31c70e","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":40,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-37","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"270de983-4a52-48ca-8f7e-237d98476d59","timestamp":"2026-03-06T19:41:38.665Z"} {"parentUuid":"270de983-4a52-48ca-8f7e-237d98476d59","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":41,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-38","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"1c64dd9e-7871-41c4-9b6e-d6af51f47247","timestamp":"2026-03-06T19:41:39.665Z"} {"parentUuid":"1c64dd9e-7871-41c4-9b6e-d6af51f47247","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":42,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-39","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"96410c25-e224-4888-ab4a-446d24117bfb","timestamp":"2026-03-06T19:41:40.664Z"} {"parentUuid":"96410c25-e224-4888-ab4a-446d24117bfb","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":43,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-40","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"207dc438-f0ae-4079-a26a-88c1d429d3a4","timestamp":"2026-03-06T19:41:41.664Z"} {"parentUuid":"207dc438-f0ae-4079-a26a-88c1d429d3a4","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":44,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-41","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"825063e4-387d-4c1a-9bad-f9d61ed15df1","timestamp":"2026-03-06T19:41:42.664Z"} {"parentUuid":"825063e4-387d-4c1a-9bad-f9d61ed15df1","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":45,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-42","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"1952f6f9-1f36-4101-8fae-2fc62aa71c26","timestamp":"2026-03-06T19:41:43.665Z"} {"parentUuid":"1952f6f9-1f36-4101-8fae-2fc62aa71c26","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":46,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-43","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"f9d701bc-0f98-4f45-81ef-74535ea1420c","timestamp":"2026-03-06T19:41:44.666Z"} {"parentUuid":"f9d701bc-0f98-4f45-81ef-74535ea1420c","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":47,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-44","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"31b9483f-1543-44df-9e82-f137e6a63b16","timestamp":"2026-03-06T19:41:45.672Z"} {"parentUuid":"31b9483f-1543-44df-9e82-f137e6a63b16","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":48,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-45","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"ef9136f5-8293-47cd-b1ee-b4ddce5327a6","timestamp":"2026-03-06T19:41:46.673Z"} {"parentUuid":"ef9136f5-8293-47cd-b1ee-b4ddce5327a6","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":49,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-46","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"48d998ab-bc91-4958-bdfd-93dccc54edd1","timestamp":"2026-03-06T19:41:47.674Z"} {"parentUuid":"48d998ab-bc91-4958-bdfd-93dccc54edd1","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":50,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-47","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"a63238f7-9acd-44d1-bd49-ca1c8243a3e3","timestamp":"2026-03-06T19:41:48.674Z"} {"parentUuid":"a63238f7-9acd-44d1-bd49-ca1c8243a3e3","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":51,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-48","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"7a7e06be-e01f-45a3-ab63-193aff953b06","timestamp":"2026-03-06T19:41:49.673Z"} {"parentUuid":"7a7e06be-e01f-45a3-ab63-193aff953b06","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":52,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-49","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"4e35e7c0-2c9b-42dd-b184-9c8667e86de5","timestamp":"2026-03-06T19:41:50.673Z"} {"parentUuid":"4e35e7c0-2c9b-42dd-b184-9c8667e86de5","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":53,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-50","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"7fc30403-6455-4497-8bb8-875903c45730","timestamp":"2026-03-06T19:41:51.673Z"} {"parentUuid":"7fc30403-6455-4497-8bb8-875903c45730","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":54,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-51","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"2ea111a5-36fa-4526-b051-bcb85bd22f9f","timestamp":"2026-03-06T19:41:52.677Z"} {"parentUuid":"2ea111a5-36fa-4526-b051-bcb85bd22f9f","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\n","elapsedTimeSeconds":55,"totalLines":32,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-52","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"7e80e074-3b31-4efd-afb2-48dd9818fd5b","timestamp":"2026-03-06T19:41:53.677Z"} {"parentUuid":"7e80e074-3b31-4efd-afb2-48dd9818fd5b","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","elapsedTimeSeconds":56,"totalLines":33,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-53","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"3bc5bd88-a9ce-48b6-b019-9c3564ab417d","timestamp":"2026-03-06T19:41:54.678Z"} {"parentUuid":"3bc5bd88-a9ce-48b6-b019-9c3564ab417d","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","elapsedTimeSeconds":57,"totalLines":33,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-54","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"910735a6-92cb-4551-93cc-80cc0d12e294","timestamp":"2026-03-06T19:41:55.677Z"} {"parentUuid":"910735a6-92cb-4551-93cc-80cc0d12e294","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","elapsedTimeSeconds":58,"totalLines":33,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-55","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"55b5bbe7-bbae-4d98-bcef-df0ae01cf0fa","timestamp":"2026-03-06T19:41:56.680Z"} {"parentUuid":"55b5bbe7-bbae-4d98-bcef-df0ae01cf0fa","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\n","elapsedTimeSeconds":59,"totalLines":33,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-56","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"61ddfdc9-f1c4-414a-98ea-f6c5941a143f","timestamp":"2026-03-06T19:41:57.679Z"} {"parentUuid":"61ddfdc9-f1c4-414a-98ea-f6c5941a143f","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","elapsedTimeSeconds":60,"totalLines":34,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-57","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"c5866988-2d8f-43a3-96f0-2a8d5ef39506","timestamp":"2026-03-06T19:41:58.680Z"} {"parentUuid":"c5866988-2d8f-43a3-96f0-2a8d5ef39506","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","elapsedTimeSeconds":61,"totalLines":34,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-58","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"8b3b0458-8d37-4f05-966a-b81b0acecb58","timestamp":"2026-03-06T19:41:59.679Z"} {"parentUuid":"8b3b0458-8d37-4f05-966a-b81b0acecb58","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","elapsedTimeSeconds":62,"totalLines":34,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-59","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"690e01c0-cc93-460a-8622-c6336c4e536e","timestamp":"2026-03-06T19:42:00.680Z"} {"parentUuid":"690e01c0-cc93-460a-8622-c6336c4e536e","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","elapsedTimeSeconds":63,"totalLines":34,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-60","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"9658f1c4-60b9-400c-9319-cec4ce648b52","timestamp":"2026-03-06T19:42:01.680Z"} {"parentUuid":"9658f1c4-60b9-400c-9319-cec4ce648b52","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull registry.access.redhat.com/crystallang/crystal:1.15.0-alpine...\nTrying to pull quay.io/crystallang/crystal:1.15.0-alpine...\nTrying to pull docker.io/crystallang/crystal:1.15.0-alpine...\nGetting image source signatures\nCopying blob sha256:f840af8151a8771e4eaaa4a920445bb0c1f0dacdfa496c5fee84d3b7a573db39\nCopying blob sha256:66a3d608f3fa52124f8463e9467f170c784abd549e8216aa45c6960b00b4b79b\nCopying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","elapsedTimeSeconds":64,"totalLines":34,"totalBytes":0,"taskId":"b8hsjyz2i","timeoutMs":600000},"toolUseID":"bash-progress-61","parentToolUseID":"toolu_01JbGmLcuNFsJku1zSjZhJ5M","uuid":"e0bffa06-3132-4105-bd04-525d9a3b04bd","timestamp":"2026-03-06T19:42:02.679Z"} {"parentUuid":"e0bffa06-3132-4105-bd04-525d9a3b04bd","isSidechain":false,"userType":"external","cwd":"/home/josie/development/personal/josiedot/health/services","sessionId":"bc433db4-20b1-438b-b1ee-fc293be81bd6","version":"2.1.70","gitBranch":"main","slug":"tender-wiggling-brooks","type":"progress","data":{"type":"bash_progress","output":"Copying blob sha256:78523090adfa9280a89f17eed15e0886327972e67d4d60c09e16703ac585374f\nCopying blob sha256:6fe2058237dfca1e598b42eb73ebf291c8d5b6550d5d88801b14879991dfb485\nCopying config sha256:b2e27e39309fbab32ba3154490dcad73b79ad2e8b7288d7df7d4bfe75aa0e365\nWriting manifest to image destination\n","fullOutput":"Uploading directory \".\" as binary input for the build ...\n.\nUploading finished\nbuild.build.openshift.io/simple-logs-api-312 started\nReceiving source from STDIN as archive ...\ntime=\"2026-03-06T19:41:09Z\" level=info msg=\"Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled\"\nI0306 19:41:09.068823 1 defaults.go:112] Defaulting to storage driver \"overlay\" with options [mountopt=metacopy=on].\nCaching blobs under \"/var/cache/blobs\".\n\nPulling image alpine:3.18 ...\nResolving \"alpine\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying to pull registry.redhat.io/alpine:3.18...\nTrying to pull registry.access.redhat.com/alpine:3.18...\nTrying to pull quay.io/alpine:3.18...\nTrying to pull docker.io/library/alpine:3.18...\nGetting image source signatures\nCopying blob sha256:44cf07d57ee4424189f012074a59110ee2065adfdde9c7d9826bebdffce0a885\nCopying config sha256:802c91d5298192c0f3a08101aeb5f9ade2992e22c9e27fa8b88eab82602550d0\nWriting manifest to image destination\n\nPulling image crystallang/crystal:1.15.0-alpine ...\nResolving \"crystallang/crystal\" using unqualified-search registries (/etc/containers/registries.conf)\nTrying t to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":56,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-54","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"2ced997b-ed10-426a-839f-8e8051668032","timestamp":"2026-02-02T21:16:56.690Z"} {"parentUuid":"2ced997b-ed10-426a-839f-8e8051668032","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":57,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-55","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"1a37a33b-815b-4d27-87df-c242f511c87f","timestamp":"2026-02-02T21:16:57.691Z"} {"parentUuid":"1a37a33b-815b-4d27-87df-c242f511c87f","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":58,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-56","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"c2383cf7-8d4c-4c96-bc3b-8c5fab71e550","timestamp":"2026-02-02T21:16:58.692Z"} {"parentUuid":"c2383cf7-8d4c-4c96-bc3b-8c5fab71e550","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":59,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-57","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"4b77d3bc-99ae-4e57-8388-fef541d110a3","timestamp":"2026-02-02T21:16:59.692Z"} {"parentUuid":"4b77d3bc-99ae-4e57-8388-fef541d110a3","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":60,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-58","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"99d58dfb-9918-4e29-875f-9c559b64be7d","timestamp":"2026-02-02T21:17:00.693Z"} {"parentUuid":"99d58dfb-9918-4e29-875f-9c559b64be7d","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-metrics-auth-rolebinding unchanged\nconfigmap/loom-loom-config unchanged\nservice/loom-controller-manager-metrics-service unchanged\nservice/loom-loom-spindle-service unchanged\npersistentvolumeclaim/loom-spindle-db created\npersistentvolumeclaim/loom-spindle-logs created\ndeployment.apps/loom-controller-manager configured\nWaiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","elapsedTimeSeconds":61,"totalLines":30,"timeoutMs":180000},"toolUseID":"bash-progress-59","parentToolUseID":"toolu_018r1zeVyMeUDCtgH6atbZQN","uuid":"7953c809-43b9-4114-bdd9-d3b0d360c0ce","timestamp":"2026-02-02T21:17:01.694Z"} {"parentUuid":"7953c809-43b9-4114-bdd9-d3b0d360c0ce","isSidechain":false,"userType":"external","cwd":"/home/josie/development/knot-operator","sessionId":"0b23e77d-e9c9-4815-8ef8-52d432fc13be","version":"2.1.29","gitBranch":"master","slug":"recursive-sleeping-waffle","type":"progress","data":{"type":"bash_progress","output":"Waiting for deployment to be ready and forcing rollout to pull fresh image...\nkubectl rollout restart deployment/loom-controller-manager -n loom-system\ndeployment.apps/loom-controller-manager restarted\nkubectl rollout status deployment/loom-controller-manager -n loom-system --timeout=120s\nWaiting for deployment \"loom-controller-manager\" rollout to finish: 0 out of 1 new replicas have been updated...","fullOutput":"persistentvolumeclaim \"loom-spindle-db\" deleted\npersistentvolumeclaim \"loom-spindle-logs\" deleted\n/home/josie/development/knot-operator/loom/bin/controller-gen rbac:roleName=manager-role crd webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases\ncd config/manager && /home/josie/development/knot-operator/loom/bin/kustomize edit set image controller=atcr.io/evan.jarrett.net/loom:latest\n/home/josie/development/knot-operator/loom/bin/kustomize build config/overlays/josie | kubectl apply -f -\nnamespace/loom-system unchanged\ncustomresourcedefinition.apiextensions.k8s.io/spindlesets.loom.j5t.io unchanged\nserviceaccount/loom-controller-manager configured\nserviceaccount/loom-spindle-job-runner configured\nrole.rbac.authorization.k8s.io/loom-leader-election-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-manager-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-auth-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-metrics-reader unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-admin-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-editor-role unchanged\nclusterrole.rbac.authorization.k8s.io/loom-spindleset-viewer-role unchanged\nrolebinding.rbac.authorization.k8s.io/loom-leader-election-rolebinding unchanged\nclusterrolebinding.rbac.authorization.k8s.io/loom-manager-rolebinding unchanged\nclusterrolebindin