Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NAS-130427 / 25.04 / Update Linux kernel to next LTS release v6.12 #200

Merged
merged 67 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
3392cff
Add TrueNAS Debian build customizations
anodos325 Jan 22, 2021
06435e5
Add initial support for large xattrs (#1)
anodos325 Mar 22, 2021
0c6e992
Add nfsv4-specific permissions checks to kernel (#2)
anodos325 May 24, 2021
695964a
Remove Chelsio FCoE options from kernel config
Jun 16, 2021
ec1a302
Add /sys/kernel/wait_for_device_probe attribute.
amotin Aug 17, 2021
4622457
truenas-scale: Add NTB to default tn.config
May 4, 2021
a8e1805
ntb/plx: Add support for PLX hardware
Apr 12, 2021
cfe97b5
NTB: ntb_transport: Allow early client registration
amotin Sep 28, 2021
44953e8
ntb_transport: Port some fixes from FreeBSD.
amotin Sep 30, 2021
f946518
ntb: Provide more reasonable interrupt names.
amotin Oct 1, 2021
3cbbe23
ntb: Mask doorbells while processing them.
amotin Oct 1, 2021
55848f9
Setup CI for TrueNAS/Linux repository
usaleem-ix Feb 3, 2022
a339d62
Better Linux kernel configuration procedure
usaleem-ix Mar 1, 2022
cefb1ac
Introduce driver_override for NTB devices.
amotin Mar 31, 2022
14f0084
Add compact scraptchpad protocol for ntb_transport.
amotin Apr 3, 2022
8e3200f
ntb_split: Introduce new driver to split NTB resources.
amotin Oct 1, 2021
4f94e47
ahciem: Emulate SES enclosure for AHCI enclosures
Apr 4, 2022
b324ae7
Allow concurrent skipping for CI
usaleem-ix Jun 17, 2022
3ee57bf
Add AMD NTB driver to the build as a module.
amotin Aug 18, 2022
1e961b5
Change SATA mobile LPM policy to max_performance
Nov 2, 2022
d373bb3
Workaround NVDIMM bugs of Supermicro X11DPI-NT boards.
amotin Nov 16, 2022
9e457a2
NTB: ntb_transport: Remove children before destruction.
amotin Dec 13, 2022
9f30a73
NTB: ntb_transport: Remove node debugfs on destruction.
amotin Dec 13, 2022
65f5829
Disable default enablement of init_on_alloc feature
usaleem-ix Jan 4, 2023
67637c8
NAS-119337 / 23.10 / Add ALUA support for iSCSI in SCALE (#67)
bmeagherix Feb 14, 2023
5a635e1
Build production and debug kernels for SCALE
usaleem-ix Jul 21, 2022
76cccda
Remove tn.config and add CI fixes
usaleem-ix Nov 7, 2023
d48e130
Add support to periodically poll enclosures
ixhamza Feb 15, 2023
1695e08
Disable default restriction to access IO memory from /dev/mem
usaleem-ix Mar 6, 2023
f2ad595
Add support for SATA disk resize without power cycle
ixhamza Mar 14, 2023
f256bc3
Enable CONFIG_SUNRPC_DEBUG and CONFIG_NFS_DEBUG for production kernel
usaleem-ix Mar 17, 2023
08499ba
ntb: intel: Set proper DMA masks, matching XLAT sizes.
amotin Mar 24, 2023
528b130
ixgbe: Print fw warning message only once
ixhamza Apr 9, 2023
3f21147
pciehp: Ignore PCIe link status LT bit if DLLLA is set.
amotin Jan 6, 2023
41b3a43
Implement native NFSv4 ACLs in NFS server
anodos325 May 14, 2023
835c04f
Build perf package for TrueNAS kernel
usaleem-ix May 18, 2023
29597db
Disable unnecessary drivers for 6.1
usaleem-ix May 29, 2023
a2460aa
nvme: skip optional id ctrl csi for versions less than 2.0.0
ixhamza Aug 16, 2023
13715d7
Enable Media USB Support
usaleem-ix Aug 16, 2023
9c0f8aa
ntb_hw_amd: Simulate link flap after unclean reboot
amotin Sep 13, 2023
591c361
ntb_netdev: Allocate new skb on rx before using the old
amotin Sep 22, 2023
5f328ff
Introduce NVDIMM NTB mirroring driver.
amotin Jul 29, 2022
792c016
Add DMA support to NVDIMM pmem driver.
amotin Nov 14, 2022
5a1796d
Fix installation of symlink for headers in modules directory
usaleem-ix Oct 29, 2024
73a312d
Add flag to struct nfs4_acl to allow dacl support
bmeagherix Oct 24, 2023
859b65f
Add DACL support to nfsd (v4.1+)
bmeagherix Oct 24, 2023
8e46b33
Move some nfs4_acl_xdr handling functions from nfsd to nfs_common for…
bmeagherix Oct 24, 2023
059de91
Add isdir parameter to generate_nfs41acl_buf and populate acl flags
bmeagherix Oct 31, 2023
6bd7ac4
Add nfs client-side support for NA41_NAME ("system.nfs4_acl_xdr")
bmeagherix Nov 2, 2023
a3e0887
Rename FORCE_MAX_ZONEORDER to ARCH_FORCE_MAX_ORDER.
amotin May 2, 2023
673823e
NAS-122619 / 24.04/ fs/cifs - add ZFS ACL support to SMB client (#144)
anodos325 Dec 29, 2023
5dfa8fd
Disable DCB for Chelsio T4
usaleem-ix Jan 26, 2024
7b485df
ntb/plx: Workaround read-only scratchpad registers
amotin Jan 29, 2024
18f9ca0
Pull in Debian Linux kernel v6.6.15 config
usaleem-ix Feb 7, 2024
b15bf29
Disable kernel modules compression
usaleem-ix Feb 7, 2024
120ad11
NVME Encapsulation support for Trimode HBA
ixhamza Feb 6, 2024
29bdf72
Change CONFIG_CONSOLE_LOGLEVEL_DEFAULT to 6 for production build (#157)
bmeagherix Feb 15, 2024
8a4f87b
NAS-127114 / 24.10 / Add support for alternate data streams (#164)
anodos325 Mar 22, 2024
e4e10be
pci: Enable overrides for missing ACS capabilities
usaleem-ix May 2, 2024
310ec49
Temporary disable new Multi-Gen LRU.
amotin May 13, 2024
35d8a08
nvme: acquire a new subsystem if no valid controllers assigned
ixhamza May 21, 2024
f615829
ses: fallback to read SAS address from VPD
ixhamza Jun 12, 2024
0976327
disable multiple device (md) driver
yocalebo May 31, 2024
8c3123d
NAS-130052 / 24.10 / Fix regression in stream truncation (#183)
anodos325 Jul 15, 2024
d8cbaed
Bump up maximum allowed ACL entries (#189)
anodos325 Aug 15, 2024
e1c138c
Enable CONFIG_WERROR for TrueNAS kernels
usaleem-ix Jul 17, 2024
233cc07
Remove err_dma_mask label from ntb_hw_gen1.c
usaleem-ix Jul 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 150 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: CI

on: [push, pull_request]

jobs:

pre_build:

runs-on: ubuntu-22.04

outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}

steps:
- name: Skip Duplicate Actions
id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: 'same_content_newer'

build_debug_kernel:

needs: pre_build
if: ${{ needs.pre_build.outputs.should_skip != 'true' }}

runs-on: ubuntu-22.04

steps:

- name: Check out repository code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt update
sudo apt install -y build-essential gawk flex bison openssl dkms \
libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves \
libncurses-dev libssl-dev devscripts debhelper-compat

- name: Generate .config
run: |
rm -rf .git .gitattributes .gitignore
export EXTRAVERSION="-debug"
make ARCH=x86_64 defconfig
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/debian_amd64.config
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/truenas.config
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/tn-debug.config
make syncconfig
make archprepare
./scripts/package/mkdebian
# Workaround to provide additional free space for kernel build
# https://github.com/actions/virtual-environments/issues/2840
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"

- name: Build Kernel
run: |
export EXTRAVERSION="-debug"
cp .config /tmp/
make distclean
mv /tmp/.config .config
make -j$(nproc) bindeb-pkg

- name: Prepare artifacts
run: |
mkdir -p debug-kernel
mv ../*.deb ./debug-kernel/
mv ../*.changes ./debug-kernel/
mv ../*.buildinfo ./debug-kernel/
cp .config ./debug-config

- name: Export artifacts
uses: actions/upload-artifact@v4
with:
name: ${{github.sha}}-debug
path: ./debug-kernel

- name: Status
run: |
echo "Status: ${{job.status}}"

build_production_kernel:

needs: pre_build
if: ${{ needs.pre_build.outputs.should_skip != 'true' }}

runs-on: ubuntu-22.04

steps:

- name: Check out repository code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt update
sudo apt install -y build-essential gawk flex bison openssl dkms \
libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves \
libncurses-dev libssl-dev libelf-dev libdw-dev systemtap-sdt-dev \
libunwind-dev libslang2-dev libperl-dev binutils-dev libiberty-dev \
python3-dev liblzma-dev libzstd-dev libcap-dev libnuma-dev \
libbabeltrace-dev openjdk-11-jdk devscripts libncurses-dev \
libssl-dev debhelper-compat libpfm4-dev libtraceevent-dev \
libcapstone-dev llvm-dev

- name: Generate .config
run: |
rm -rf .git .gitattributes .gitignore
export EXTRAVERSION="-production"
make ARCH=x86_64 defconfig
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/debian_amd64.config
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/truenas.config
./scripts/kconfig/merge_config.sh .config ./scripts/package/truenas/tn-production.config
make syncconfig
make archprepare
./scripts/package/mkdebian
# Workaround to provide additional free space for kernel build
# https://github.com/actions/virtual-environments/issues/2840
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"

- name: Build Kernel
run: |
export EXTRAVERSION="-production"
cp .config /tmp/
make distclean
mv /tmp/.config .config
make -j$(nproc) bindeb-pkg

- name: Prepare artifacts
run: |
mkdir -p production-kernel
mv ../*.deb ./production-kernel/
mv ../*.changes ./production-kernel/
mv ../*.buildinfo ./production-kernel/
cp .config ./production-config

- name: Export artifacts
uses: actions/upload-artifact@v4
with:
name: ${{github.sha}}-production
path: ./production-kernel

- name: Status
run: |
echo "Status: ${{job.status}}"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ modules.order
!.get_maintainer.ignore
!.gitattributes
!.gitignore
!.github
!.kunitconfig
!.mailmap
!.rustfmt.toml
Expand Down
8 changes: 8 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4473,6 +4473,14 @@
nomsi [MSI] If the PCI_MSI kernel config parameter is
enabled, this kernel boot option can be used to
disable the use of MSI interrupts system-wide.
pci_acs_override [PCIE] Override missing PCIe ACS support for:
downstream
All downstream ports - full ACS capabilities
multifunction
Add multifunction devices - multifunction ACS subset
id:nnnn:nnnn
Specific device - full ACS capabilities
Specified as vid:did (vendor/device ID) in hex
noioapicquirk [APIC] Disable all boot interrupt quirks.
Safety option to keep boot IRQs enabled. This
should never be necessary.
Expand Down
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
VERSION = 6
PATCHLEVEL = 12
SUBLEVEL = 0
EXTRAVERSION =
NAME = Baby Opossum Posse

ifndef EXTRAVERSION
EXTRAVERSION = -production
endif

# *DOCUMENTATION*
# To see a list of typical targets execute "make help"
# More info can be located in ./README
Expand Down
14 changes: 14 additions & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1666,6 +1666,20 @@ config X86_PMEM_LEGACY

Say Y if unsure.

config ARCH_FORCE_MAX_ORDER
int "Maximum zone order"
default "11"
help
The kernel memory allocator divides physically contiguous memory
blocks into "zones", where each zone is a power of two number of
pages. This option selects the largest power of two that the kernel
keeps in the memory allocator. If you need to allocate very large
blocks of physically contiguous memory, then you may need to
increase this value.

This config option is actually maximum order plus one. For example,
a value of 11 means that the largest free memory block is 2^10 pages.

config HIGHPTE
bool "Allocate 3rd-level pagetables from highmem"
depends on HIGHMEM
Expand Down
15 changes: 12 additions & 3 deletions drivers/acpi/nfit/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1839,7 +1839,7 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc,
*/
clear_bit(NVDIMM_FAMILY_INTEL, &nd_desc->dimm_family_mask);
for (i = 0; i <= NVDIMM_FAMILY_MAX; i++)
if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 1)) {
if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 0xfffffffe)) {
set_bit(i, &nd_desc->dimm_family_mask);
if (family < 0 || i == default_dsm_family)
family = i;
Expand Down Expand Up @@ -1896,8 +1896,17 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc,
else {
if (acpi_nvdimm_has_method(adev_dimm, "_LSI")
&& acpi_nvdimm_has_method(adev_dimm, "_LSR")) {
dev_dbg(dev, "%s: has _LSR\n", dev_name(&adev_dimm->dev));
set_bit(NFIT_MEM_LSR, &nfit_mem->flags);
union acpi_object *obj = acpi_label_info(adev_dimm->handle);
if (!obj || obj->type != ACPI_TYPE_BUFFER ||
obj->buffer.length < 12 ||
((u32 *)obj->buffer.pointer)[0] != 0) {
dev_err(dev, "%s: has broken _LSI\n",
dev_name(&adev_dimm->dev));
} else {
ACPI_FREE(obj);
dev_dbg(dev, "%s: has _LSR\n", dev_name(&adev_dimm->dev));
set_bit(NFIT_MEM_LSR, &nfit_mem->flags);
}
}

if (test_bit(NFIT_MEM_LSR, &nfit_mem->flags)
Expand Down
2 changes: 1 addition & 1 deletion drivers/ata/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
obj-$(CONFIG_ATA) += libata.o

# non-SFF interface
obj-$(CONFIG_SATA_AHCI) += ahci.o libahci.o
obj-$(CONFIG_SATA_AHCI) += ahci.o ahciem.o libahci.o
obj-$(CONFIG_SATA_ACARD_AHCI) += acard-ahci.o libahci.o
obj-$(CONFIG_SATA_AHCI_SEATTLE) += ahci_seattle.o libahci.o libahci_platform.o
obj-$(CONFIG_SATA_AHCI_PLATFORM) += ahci_platform.o libahci.o libahci_platform.o
Expand Down
11 changes: 11 additions & 0 deletions drivers/ata/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,10 @@ static struct pci_driver ahci_pci_driver = {
},
};

static int ahciem_enable = -1;
module_param(ahciem_enable, int, 0644);
MODULE_PARM_DESC(ahciem_enable, "Emulate SES enclosure (-1 = detected, 0 = disabled, 1 = forced)");

#if IS_ENABLED(CONFIG_PATA_MARVELL)
static int marvell_enable;
#else
Expand Down Expand Up @@ -2050,6 +2054,13 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc)
goto err_rm_sysfs_file;

if (ahciem_enable == 1 ||
(ahciem_enable == -1 && (pi.flags & ATA_FLAG_EM))) {
rc = ahciem_host_activate(host);
if (rc)
goto err_rm_sysfs_file;
}

pm_runtime_put_noidle(&pdev->dev);
return 0;

Expand Down
5 changes: 5 additions & 0 deletions drivers/ata/ahci.h
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ struct ahci_host_priv {
u32 em_loc; /* enclosure management location */
u32 em_buf_sz; /* EM buffer size in byte */
u32 em_msg_type; /* EM message type */
struct Scsi_Host *em_shost; /* EM SCSI host */
u32 remapped_nvme; /* NVMe remapped device count */
bool got_runtime_pm; /* Did we do pm_runtime_get? */
unsigned int n_clks;
Expand Down Expand Up @@ -453,4 +454,8 @@ static inline int ahci_nr_ports(u32 cap)
return (cap & 0x1f) + 1;
}

bool scsi_is_ahci(struct scsi_device *sdev);
bool scsi_is_ahciem(struct scsi_device *sdev);
int ahciem_host_activate(struct ata_host *host);

#endif /* _AHCI_H */
Loading