Skip to content

Commit 864aed6

Browse files
committed
Merge tag 'kernel-6.12.0-55.2.1.el10_0' into main
JIRA: INTERNAL Upstream Status: RHEL only Don't bring in changes from Makefile.rhelver and self-tests. Signed-off-by: Jan Stancek <jstancek@redhat.com>
2 parents 6251936 + 3a079dc commit 864aed6

File tree

10 files changed

+276
-113
lines changed

10 files changed

+276
-113
lines changed

Documentation/ABI/testing/sysfs-kernel-fadump

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,5 @@ Date: May 2024
5555
Contact: linuxppc-dev@lists.ozlabs.org
5656
Description: read/write
5757
This is a special sysfs file available to setup additional
58-
parameters to be passed to capture kernel.
58+
parameters to be passed to capture kernel. For HASH MMU it
59+
is exported only if RMA size higher than 768MB.

Documentation/arch/powerpc/firmware-assisted-dump.rst

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,28 @@ to ensure that crash data is preserved to process later.
120120
e.g.
121121
# echo 1 > /sys/firmware/opal/mpipl/release_core
122122

123+
-- Support for Additional Kernel Arguments in Fadump
124+
Fadump has a feature that allows passing additional kernel arguments
125+
to the fadump kernel. This feature was primarily designed to disable
126+
kernel functionalities that are not required for the fadump kernel
127+
and to reduce its memory footprint while collecting the dump.
128+
129+
Command to Add Additional Kernel Parameters to Fadump:
130+
e.g.
131+
# echo "nr_cpus=16" > /sys/kernel/fadump/bootargs_append
132+
133+
The above command is sufficient to add additional arguments to fadump.
134+
An explicit service restart is not required.
135+
136+
Command to Retrieve the Additional Fadump Arguments:
137+
e.g.
138+
# cat /sys/kernel/fadump/bootargs_append
139+
140+
Note: Additional kernel arguments for fadump with HASH MMU is only
141+
supported if the RMA size is greater than 768 MB. If the RMA
142+
size is less than 768 MB, the kernel does not export the
143+
/sys/kernel/fadump/bootargs_append sysfs node.
144+
123145
Implementation details:
124146
-----------------------
125147

arch/powerpc/include/asm/prom.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
struct device_node;
1818
struct property;
1919

20+
#define MIN_RMA 768 /* Minimum RMA (in MB) for CAS negotiation */
21+
2022
#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
2123
#define OF_DT_END_NODE 0x2 /* End node */
2224
#define OF_DT_PROP 0x3 /* Property: name off, size,

arch/powerpc/kernel/fadump.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include <asm/fadump-internal.h>
3434
#include <asm/setup.h>
3535
#include <asm/interrupt.h>
36+
#include <asm/prom.h>
3637

3738
/*
3839
* The CPU who acquired the lock to trigger the fadump crash should
@@ -1763,19 +1764,19 @@ void __init fadump_setup_param_area(void)
17631764
range_end = memblock_end_of_DRAM();
17641765
} else {
17651766
/*
1766-
* Passing additional parameters is supported for hash MMU only
1767-
* if the first memory block size is 768MB or higher.
1767+
* Memory range for passing additional parameters for HASH MMU
1768+
* must meet the following conditions:
1769+
* 1. The first memory block size must be higher than the
1770+
* minimum RMA (MIN_RMA) size. Bootloader can use memory
1771+
* upto RMA size. So it should be avoided.
1772+
* 2. The range should be between MIN_RMA and RMA size (ppc64_rma_size)
1773+
* 3. It must not overlap with the fadump reserved area.
17681774
*/
1769-
if (ppc64_rma_size < 0x30000000)
1775+
if (ppc64_rma_size < MIN_RMA*1024*1024)
17701776
return;
17711777

1772-
/*
1773-
* 640 MB to 768 MB is not used by PFW/bootloader. So, try reserving
1774-
* memory for passing additional parameters in this range to avoid
1775-
* being stomped on by PFW/bootloader.
1776-
*/
1777-
range_start = 0x2A000000;
1778-
range_end = range_start + 0x4000000;
1778+
range_start = MIN_RMA * 1024 * 1024;
1779+
range_end = min(ppc64_rma_size, fw_dump.boot_mem_top);
17791780
}
17801781

17811782
fw_dump.param_area = memblock_phys_alloc_range(COMMAND_LINE_SIZE,

arch/powerpc/kernel/prom_init.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,7 @@ static const struct ibm_arch_vec ibm_architecture_vec_template __initconst = {
10611061
.virt_base = cpu_to_be32(0xffffffff),
10621062
.virt_size = cpu_to_be32(0xffffffff),
10631063
.load_base = cpu_to_be32(0xffffffff),
1064-
.min_rma = cpu_to_be32(512), /* 512MB min RMA */
1064+
.min_rma = cpu_to_be32(MIN_RMA),
10651065
.min_load = cpu_to_be32(0xffffffff), /* full client load */
10661066
.min_rma_percent = 0, /* min RMA percentage of total RAM */
10671067
.max_pft_size = 48, /* max log_2(hash table size) */

drivers/scsi/mpi3mr/mpi3mr.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ extern struct list_head mrioc_list;
5757
extern int prot_mask;
5858
extern atomic64_t event_counter;
5959

60-
#define MPI3MR_DRIVER_VERSION "8.12.0.0.50"
61-
#define MPI3MR_DRIVER_RELDATE "05-Sept-2024"
60+
#define MPI3MR_DRIVER_VERSION "8.12.1.0.50"
61+
#define MPI3MR_DRIVER_RELDATE "28-January-2025"
6262

6363
#define MPI3MR_DRIVER_NAME "mpi3mr"
6464
#define MPI3MR_DRIVER_LICENSE "GPL"
@@ -81,13 +81,14 @@ extern atomic64_t event_counter;
8181

8282
/* Admin queue management definitions */
8383
#define MPI3MR_ADMIN_REQ_Q_SIZE (2 * MPI3MR_PAGE_SIZE_4K)
84-
#define MPI3MR_ADMIN_REPLY_Q_SIZE (4 * MPI3MR_PAGE_SIZE_4K)
84+
#define MPI3MR_ADMIN_REPLY_Q_SIZE (8 * MPI3MR_PAGE_SIZE_4K)
8585
#define MPI3MR_ADMIN_REQ_FRAME_SZ 128
8686
#define MPI3MR_ADMIN_REPLY_FRAME_SZ 16
8787

8888
/* Operational queue management definitions */
8989
#define MPI3MR_OP_REQ_Q_QD 512
9090
#define MPI3MR_OP_REP_Q_QD 1024
91+
#define MPI3MR_OP_REP_Q_QD2K 2048
9192
#define MPI3MR_OP_REP_Q_QD4K 4096
9293
#define MPI3MR_OP_REQ_Q_SEG_SIZE 4096
9394
#define MPI3MR_OP_REP_Q_SEG_SIZE 4096
@@ -134,8 +135,6 @@ extern atomic64_t event_counter;
134135

135136
#define MPI3MR_WATCHDOG_INTERVAL 1000 /* in milli seconds */
136137

137-
#define MPI3MR_DEFAULT_CFG_PAGE_SZ 1024 /* in bytes */
138-
139138
#define MPI3MR_RESET_TOPOLOGY_SETTLE_TIME 10
140139

141140
#define MPI3MR_SCMD_TIMEOUT (60 * HZ)
@@ -331,6 +330,7 @@ enum mpi3mr_reset_reason {
331330
#define MPI3MR_RESET_REASON_OSTYPE_SHIFT 28
332331
#define MPI3MR_RESET_REASON_IOCNUM_SHIFT 20
333332

333+
334334
/* Queue type definitions */
335335
enum queue_type {
336336
MPI3MR_DEFAULT_QUEUE = 0,
@@ -390,6 +390,7 @@ struct mpi3mr_ioc_facts {
390390
u16 max_msix_vectors;
391391
u8 personality;
392392
u8 dma_mask;
393+
bool max_req_limit;
393394
u8 protocol_flags;
394395
u8 sge_mod_mask;
395396
u8 sge_mod_value;
@@ -459,6 +460,8 @@ struct op_req_qinfo {
459460
* @enable_irq_poll: Flag to indicate polling is enabled
460461
* @in_use: Queue is handled by poll/ISR
461462
* @qtype: Type of queue (types defined in enum queue_type)
463+
* @qfull_watermark: Watermark defined in reply queue to avoid
464+
* reply queue full
462465
*/
463466
struct op_reply_qinfo {
464467
u16 ci;
@@ -474,6 +477,7 @@ struct op_reply_qinfo {
474477
bool enable_irq_poll;
475478
atomic_t in_use;
476479
enum queue_type qtype;
480+
u16 qfull_watermark;
477481
};
478482

479483
/**
@@ -1093,6 +1097,7 @@ struct scmd_priv {
10931097
* @ts_update_interval: Timestamp update interval
10941098
* @reset_in_progress: Reset in progress flag
10951099
* @unrecoverable: Controller unrecoverable flag
1100+
* @io_admin_reset_sync: Manage state of I/O ops during an admin reset process
10961101
* @prev_reset_result: Result of previous reset
10971102
* @reset_mutex: Controller reset mutex
10981103
* @reset_waitq: Controller reset wait queue
@@ -1133,9 +1138,6 @@ struct scmd_priv {
11331138
* @io_throttle_low: I/O size to stop throttle in 512b blocks
11341139
* @num_io_throttle_group: Maximum number of throttle groups
11351140
* @throttle_groups: Pointer to throttle group info structures
1136-
* @cfg_page: Default memory for configuration pages
1137-
* @cfg_page_dma: Configuration page DMA address
1138-
* @cfg_page_sz: Default configuration page memory size
11391141
* @sas_transport_enabled: SAS transport enabled or not
11401142
* @scsi_device_channel: Channel ID for SCSI devices
11411143
* @transport_cmds: Command tracker for SAS transport commands
@@ -1159,6 +1161,8 @@ struct scmd_priv {
11591161
* @snapdump_trigger_active: Snapdump trigger active flag
11601162
* @pci_err_recovery: PCI error recovery in progress
11611163
* @block_on_pci_err: Block IO during PCI error recovery
1164+
* @reply_qfull_count: Occurences of reply queue full avoidance kicking-in
1165+
* @prevent_reply_qfull: Enable reply queue prevention
11621166
*/
11631167
struct mpi3mr_ioc {
11641168
struct list_head list;
@@ -1282,6 +1286,7 @@ struct mpi3mr_ioc {
12821286
u16 ts_update_interval;
12831287
u8 reset_in_progress;
12841288
u8 unrecoverable;
1289+
u8 io_admin_reset_sync;
12851290
int prev_reset_result;
12861291
struct mutex reset_mutex;
12871292
wait_queue_head_t reset_waitq;
@@ -1332,10 +1337,6 @@ struct mpi3mr_ioc {
13321337
u16 num_io_throttle_group;
13331338
struct mpi3mr_throttle_group_info *throttle_groups;
13341339

1335-
void *cfg_page;
1336-
dma_addr_t cfg_page_dma;
1337-
u16 cfg_page_sz;
1338-
13391340
u8 sas_transport_enabled;
13401341
u8 scsi_device_channel;
13411342
struct mpi3mr_drv_cmd transport_cmds;
@@ -1361,6 +1362,8 @@ struct mpi3mr_ioc {
13611362
bool fw_release_trigger_active;
13621363
bool pci_err_recovery;
13631364
bool block_on_pci_err;
1365+
atomic_t reply_qfull_count;
1366+
bool prevent_reply_qfull;
13641367
};
13651368

13661369
/**

0 commit comments

Comments
 (0)