Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: SamsungDS/linux

Tags

sam-cdq-v7

Toggle sam-cdq-v7's commit message
nvme: hold the mm read lock when pinning.

Signed-off-by: Joel Granados <[email protected]>

sam-cdq-v6

Toggle sam-cdq-v6's commit message
nvme/cdq: implement PRP list handling

Replace kernel memory allocation with user space memory mapping for CDQ
entries. Add comprehensive PRP (Physical Region Page) list setup to
handle scatter-gather memory layouts with proper DMA mapping. Remove
file descriptor based approach in favor of direct user memory access.

Key changes:
- Add nvme_cdq_alloc_from_usr() to pin and map user pages
- Implement nvme_cdq_setup_prps() for multi-page PRP list creation
- Remove anon_inode file descriptor mechanism
- Update UAPI to accept user virtual address instead of returning fd
- Add proper cleanup for PRP lists after command submission

This enables direct user space access to CDQ memory while maintaining
proper DMA coherency and memory management."

Signed-off-by: Joel Granados <[email protected]>

sam-cdq-v5

Toggle sam-cdq-v5's commit message
nvme/cdq: Remove all code to traverse CDQ

With the CDQ memory being mmaped into user space. The responsibility of
making sense of that memory is now on user space. The kernel remains
responsible of signaling an eventfd when it detects that a ONE_SHOT CDQ
AEN.

Interface is simplified as there is no need to define the number of
entries; we can get away with just the total CDQ size in number of
bytes. There is only need for the MOS and the CDS for CDQ creation, the
rest is removed. We are left with six values at CDQ creation: size of
the CDQ in bytes, eventfd for the TPT, the returned cdq identifier and
the internal kernel file descriptor, CQS and MOS.

Signed-off-by: Joel Granados <[email protected]>

sam-cdq-v4

Toggle sam-cdq-v4's commit message
nvme: Add AEN handler for CDQ tail pointer events

Add a new "one shot" ASYNC type event that will be called in
nvme_complete_async_event. Use the new "one shot" path to handle
Controller Data Queue Tail Pointer events that arrive through AENs.

For now we just print to the kernel log that an event has been received,
The logic of what to do with the CDQ AEN should be added to
nvme_cdq_aen_tpevent.

Signed-off-by: Joel Granados <[email protected]>

sam-cdq-v3

Toggle sam-cdq-v3's commit message
nvme: use cdqp_mask instead of hardcoded 0x1 in phase bit toggle

Replace hardcoded 0x1 with cdqp_mask for phase bit toggling in
nvme_cdq_next() to support variable phase bit widths.

Signed-off-by: Joel Granados <[email protected]>

sam-cdq-v2

Toggle sam-cdq-v2's commit message
nvme/cdq: Add a free_cdqs to controller init

Signed-off-by: Joel Granados <[email protected]>

jag/iopf-v1

Toggle jag/iopf-v1's commit message
Linux 6.15

sam-cdq-v1

Toggle sam-cdq-v1's commit message
nvme/cdq: nvme_pci_cdq_travers needs to return ssize_t in order to be…

… used for reading

Signed-off-by: Joel Granados <[email protected]>

sent/20240807-macos-build-support-9ca0d77adb17-v3

Toggle sent/20240807-macos-build-support-9ca0d77adb17-v3's commit message
Enable build system on macOS hosts

This patch allows for building the Linux kernel for arm64 in macOS with
LLVM.

macOS does not provide certain headers that are available in a GNU/Linux
distribution with development headers installed, usually provided by
the GNU C Library (glibc) and/or other projects. These missing headers
are needed as build dependencies. To address this, users need to provide
these headers manually.

To assist with provisioning and setting up the environment, the Bee
Headers Project [1][2][3] provides the necessary headers, along with a
pkg-config file to locate the include directory and an initialization
script to configure the environment. However, this is optional and users
can choose to set up their own environments and manually provide the
required headers. In that case, the project can be used as a reference.

Here’s a quick overview of the setup process using Bee Headers:

Set up a case sensitive volume to fetch Linux and build:

	diskutil apfs addVolume /dev/disk<N> "Case-sensitive APFS" linux

Install dependencies:

	brew install coreutils findutils gnu-sed gnu-tar grep llvm make pkg-config
	brew tap bee-headers/bee-headers
	brew install bee-headers/bee-headers/bee-headers

Initialize the environment with `bee-init` and run it in each new shell:

	source bee-init

Start build:
	make LLVM=1 defconfig
	make LLVM=1 -j$(nproc)

For more details and manual steps, refer to the README [4] of the Bee
Headers project.

[1] Project: https://github.com/bee-headers

[2] Headers repository: https://github.com/bee-headers/headers.git

[3] Homebrew Tap formula: https://github.com/bee-headers/homebrew-bee-headers.git

[4] https://github.com/bee-headers/homebrew-bee-headers/blob/main/README.md

To: Lucas De Marchi <[email protected]>
To: Thomas Hellström <[email protected]>
To: Rodrigo Vivi <[email protected]>
To: Maarten Lankhorst <[email protected]>
To: Maxime Ripard <[email protected]>
To: Thomas Zimmermann <[email protected]>
To: David Airlie <[email protected]>
To: Simona Vetter <[email protected]>
To: Nathan Chancellor <[email protected]>
To: Nick Desaulniers <[email protected]>
To: Bill Wendling <[email protected]>
To: Justin Stitt <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: Barry Song <[email protected]>
Cc: Finn Behrens <[email protected]>
Cc: Daniel Gomez (Samsung) <[email protected]>
Cc: [email protected] <[email protected]>
Cc: Nick Desaulniers <[email protected]>
Cc: Klaus Jensen <[email protected]>
Cc: Jeff Xie <[email protected]>
Signed-off-by: Daniel Gomez <[email protected]>
---
Changes in v3:
- Update drm/xe patch to replace program_invocation_short_name with
argv[0] instead of using getprogname + ifdef as suggested by Masahiro.
- Patch merged: "[PATCH v2 1/8] scripts: subarch.include: fix SUBARCH on
macOS hosts".
- "file2alias: fix uuid_t definitions for macos" patch is dropped. User
requires to set up this in the build environment with something like:
export HOSTCFLAGS="-D_UUID_T -D__GETHOSTUUID_H"
- Drop documentation patch. Environment setup and headers should now be
provided by the user. The project Bee Headers can be used to help with
the steps and documentation.
	- HOSTCFLAGS should be used to provide the missing headers as well as the
above defines. Example using Bee Headers:
export HOSTCFLAGS="$(pkg-config --cflags bee-headers) -D_UUID_T
-D__GETHOSTUUID_H"
	- PATH needs to have all tools the kernel build system depends on.
Something like this:
	PATH="#{HOMEBREW_PREFIX}/opt/coreutils/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/findutils/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/gawk/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/gnu-sed/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/gnu-tar/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/grep/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/make/libexec/gnubin:$PATH"
	PATH="#{HOMEBREW_PREFIX}/opt/llvm/bin:$PATH"
- Drop patches below as they've been replaced by a new 2nd version [8]:
	selinux: move genheaders to security/selinux/
	selinux: do not include <linux/*.h> headers from host programs
[8] Subject: [PATCH v2 1/2] selinux: do not include <linux/*.h> headers from host programs
https://lore.kernel.org/all/[email protected]/#t
Note: This has been specified as dependency with b4 and message-id in
the cover letter.
- Link to v2: https://lore.kernel.org/r/[email protected]

Changes in v2:
- Add documentation and set this 'feature' as experimental.
- Update cover letter.
- Drop unnecessary changes. Patches removed:
	- kbuild: add header_install dependency to scripts
	- include: add endian.h support
	- include: add elf.h support
- Update Makefiles to find Bee Headers with pkg-config.
- Update file2alias to solve uuid_t conflicts inside Makefile as
suggested by Nicolas Schier.
- Adapt xe_gen_wa_oob to solve getprogname()/
program_invocation_short_name in runtime. as suggested by Lucas De
Marchi.
- Remove linux/version.h in accessibility/speakup as suggested by
Masahiro Yamada.
- Replace selinux patches with new Masahiro Yamada's patches:
	Message-id: [email protected]
	Link: https://lore.kernel.org/all/[email protected]/
- Replace tty/vt with new Masahiro Yamada's patch:
	Message-id: [email protected]
	Link: https://lore.kernel.org/all/[email protected]/
	(Already merged in the linux-next tag used)
- Replace scripts/kallsyms patch with Masahiro Yamada's patch:
	Message-id: [email protected]
	Link: https://lore.kernel.org/all/[email protected]/
	(Already merged in the linux-next tag used)
- Link to v1: https://lore.kernel.org/r/[email protected]

---
Daniel Gomez (1):
      drm/xe: xe_gen_wa_oob: replace program_invocation_short_name

 drivers/gpu/drm/xe/xe_gen_wa_oob.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
---
base-commit: ef545bc03a65438cabe87beb1b9a15b0ffcb6ace
change-id: 20240807-macos-build-support-9ca0d77adb17
prerequisite-message-id: <[email protected]>
prerequisite-patch-id: 5d49a803cc75a57174d16745222d1602809aeb96
prerequisite-patch-id: b2da334443fa81626d742053ca5005074e9e1355

Best regards,

sent/20240916-blktrace-algn-a11320353182-v1

Toggle sent/20240916-blktrace-algn-a11320353182-v1's commit message
[RFC] blktrace: add i/o alignment information

This patch introduces support for tracing maximum I/O alignment
boundaries in terms of Logical Block Addressing (LBA) and size within
blktrace for issued I/Os.

Note: the term alignment has been previously discussed here [1], where
it was suggested to use "largest block size granularity". In this RFC,
alignment term is kept, though further suggestions for an appropriate
term are welcomed.

[1] https://lore.kernel.org/all/[email protected]

Tracing alignment information is important for high-capacity and QLC
SSDs with Indirection Units greater than 4 KiB. These devices are still
4 KiB in Logical Block Size (LBS) but because they work at higher IUs,
unaligned writes to the IU boundaries can imply in a read-modify-write
(RMW).

More information about the motivation can be found in the first LBS
patch series [2].

[2] Subject: [RFC 00/23] Enable block size > page size in XFS
https://lore.kernel.org/lkml/[email protected]/

Additionally, Dan Helmick's talk [3] provides further context on the
importance of I/O granularity and alignment, specifically in the context
of NVMe.

[3] SDC2022 – Optimal Performance Parameters for NVMe SSDs

The graph below is a representation of the device IU vs what is
considered here the I/O block alignment.

    |--- IU Boundaries ----|      |-PS-|
a)  [====][====][====][====][····][····][····]--
    |                      |
b)  [····][====][====][====][====][····][····]--
    |                      |
c)  [····][····][====][====][····][····][····]--
    |                      |
LBA 0                      4

    Key:
    [====] = I/O Block
    [····] = Memory in Page Size (PS) chunks
    PS: System base Page Size (e.g. x86_64 is 4 KiB)

a) I/O matches IU boundaries (LBA and block size). I/O is aligned to
IU boundaries.
b) The size of the I/O matches the IU size but the I/O is not aligned to
the IU boundaries. I/O is unaligned.
c) I/O does not match in either size or LBA. I/O is unaligned.

This patch enables blktrace to report alignment details via new
alignment parameter, which will be calculated during I/O tracing. For
the example above, the following values would be reported:

a) |16384|: I/O aligned to 16 KiB boundaries.
b) |4096|:  I/O aligned to 4 KiB boundaries.
c) |8192|:  I/O aligned to 8 KiB boundaries.

Finally, this patch requires some minor changes [4] in the blktrace
tool. If this moves forward, the changes will be submitted accordingly.

[4] https://github.com/dkruces/blktrace/tree/algn

To: Jens Axboe <[email protected]>
To: Steven Rostedt <[email protected]>
To: Masami Hiramatsu <[email protected]>
To: Mathieu Desnoyers <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: <[email protected]>
Cc: John Garry <[email protected]>
Cc: Dave Chinner <[email protected]>
Cc: Luis Chamberlain <[email protected]>
Cc: Pankaj Raghav <[email protected]>
Cc: Dan Helmick <[email protected]>
Cc: Daniel Gomez <[email protected]>
Signed-off-by: Daniel Gomez <[email protected]>

---
Daniel Gomez (1):
      blktrace: add i/o alignment information

 include/linux/blktrace_api.h      |  2 ++
 include/uapi/linux/blktrace_api.h |  1 +
 kernel/trace/blktrace.c           | 38 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+)
---
base-commit: 4f3e012
change-id: 20240916-blktrace-algn-a11320353182

Best regards,