All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com>
Cc: linux-pci@vger.kernel.org, linux-cxl@vger.kernel.org
Subject: Re: [PATCH v2 06/13] drivers/base/memory: Add cxl_offline_memory() to offline a physical range
Date: Tue, 25 Aug 2026 02:40:37 +0000	[thread overview]
Message-ID: <20260825024037.7BDF71F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260825022628.3651434-7-fabio.m.de.francesco@linux.intel.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] cxl_offline_memory() leaves memory blocks partially offlined and permanently stranded if device_offline() fails midway, lacking a state-tracking and rollback mechanism.
--

--- Patch [6]: [PATCH v2 06/13] drivers/base/memory: Add cxl_offline_memory() to offline a physical range ---
commit 00648cd16fe5b1311f9ee6c83c16afccf56f6b3d
Author: Fabio M. De Francesco <fabio.m.de.francesco@linux.intel.com>

drivers/base/memory: Add cxl_offline_memory() to offline a physical range

A CXL region whose capacity is online as System RAM must be taken
offline before a Secondary Bus Reset of the CXL Downstream Port it is
reached through.

> diff --git a/drivers/base/memory.c b/drivers/base/memory.c
> index bcfe2d9f4adbd..ce89b251d34ac 100644
> --- a/drivers/base/memory.c
> +++ b/drivers/base/memory.c

[ ... ]

> @@ -1018,6 +1018,42 @@ int walk_memory_blocks(unsigned long start, unsigned long size,
>  	return ret;
>  }
>  
> +static int cxl_offline_memory_block(struct memory_block *mem, void *arg)
> +{
> +	int rc = device_offline(&mem->dev);
> +
> +	/* device_offline() returns a positive value when already offline. */
> +	if (rc > 0)
> +		return 0;
> +
> +	return rc;
> +}
> +
> +/**
> + * cxl_offline_memory - offline the memory blocks spanning a physical range

[ ... ]

> +int cxl_offline_memory(u64 start, u64 size)
> +{
> +	int rc;
> +
> +	lock_device_hotplug();
> +	rc = walk_memory_blocks(start, size, NULL, cxl_offline_memory_block);

[Severity: High]
If device_offline() fails midway through a range (for example, due to
unmovable or pinned pages), will this leave the system in an inconsistent
state with partially offlined memory ranges and silent capacity loss?

When walk_memory_blocks() aborts on an error from cxl_offline_memory_block(),
there doesn't appear to be a rollback mechanism for blocks that were already
successfully offlined.

Additionally, since cxl_offline_memory_block() treats an already-offline
block as a success but doesn't record that state, how could a caller
safely roll back without accidentally onlining a block that was originally
offline before cxl_offline_memory() was called? Core memory hotplug APIs
typically allocate an array to track original states to handle these failures.

> +	unlock_device_hotplug();
> +
> +	return rc;
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260825022628.3651434-1-fabio.m.de.francesco@linux.intel.com?part=6

  reply	other threads:[~2026-08-25  2:40 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-25  2:26 [PATCH v2 00/13] Make SBR work for CXL Downstream Ports Fabio M. De Francesco
2026-08-25  2:26 ` [PATCH v2 01/13] cxl/pci: Make the HDM and Mem_Enable writes callable from CXL Fabio M. De Francesco
2026-08-25  2:37   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 02/13] cxl/hdm: Add function to restore one HDM decoder Fabio M. De Francesco
2026-08-25  2:41   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 03/13] cxl/hdm: Add function to restore CXL.mem decode Fabio M. De Francesco
2026-08-25  2:45   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 04/13] cxl/hdm: Reprogram the HDM Decoders below a CXL Port Fabio M. De Francesco
2026-08-25  2:58   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 05/13] cxl/core: Restore the HDM decoders below DPort Fabio M. De Francesco
2026-08-25  2:43   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 06/13] drivers/base/memory: Add cxl_offline_memory() to offline a physical range Fabio M. De Francesco
2026-08-25  2:40   ` sashiko-bot [this message]
2026-08-25  2:26 ` [PATCH v2 07/13] cxl/core: Add region disable and enable for a DPort SBR Fabio M. De Francesco
2026-08-25  2:44   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 08/13] cxl/core: Collect the regions routed through a DPort Fabio M. De Francesco
2026-08-25  2:41   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 09/13] PCI/CXL: Disable and re-enable CXL regions Fabio M. De Francesco
2026-08-25  2:39   ` sashiko-bot
2026-08-26  9:04   ` Richard Cheng
2026-08-25  2:26 ` [PATCH v2 10/13] PCI/CXL: Clear ACS SV across an SBR of a CXL DPort Fabio M. De Francesco
2026-08-25  2:40   ` sashiko-bot
2026-08-26  8:47   ` Richard Cheng
2026-08-25  2:26 ` [PATCH v2 11/13] PCI/DPC: Unbind regions for DPC recovery Fabio M. De Francesco
2026-08-25  2:51   ` sashiko-bot
2026-08-26  8:54   ` Richard Cheng
2026-08-25  2:26 ` [PATCH v2 12/13] PCI/CXL: Add a sysfs entry to unmask SBR Fabio M. De Francesco
2026-08-25  2:51   ` sashiko-bot
2026-08-25  2:26 ` [PATCH v2 13/13] PCI/CXL: Refuse an SBR of a CXL DPort unless authorized Fabio M. De Francesco
2026-08-25  2:59   ` sashiko-bot
2026-08-26  9:21 ` [PATCH v2 00/13] Make SBR work for CXL Downstream Ports Richard Cheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260825024037.7BDF71F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=fabio.m.de.francesco@linux.intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.