Skip to content

Commit ca02bcc

Browse files
committed
Merge remote-tracking branch 'stable/linux-6.6.y' into v6.6+
2 parents 9de1193 + c9a51eb commit ca02bcc

52 files changed

Lines changed: 884 additions & 428 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 6
4-
SUBLEVEL = 9
4+
SUBLEVEL = 10
55
EXTRAVERSION =
66
NAME = Hurr durr I'ma ninja sloth
77

arch/powerpc/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -607,10 +607,10 @@ config ARCH_SUPPORTS_KEXEC
607607
def_bool PPC_BOOK3S || PPC_E500 || (44x && !SMP)
608608

609609
config ARCH_SUPPORTS_KEXEC_FILE
610-
def_bool PPC64 && CRYPTO=y && CRYPTO_SHA256=y
610+
def_bool PPC64
611611

612612
config ARCH_SUPPORTS_KEXEC_PURGATORY
613-
def_bool KEXEC_FILE
613+
def_bool y
614614

615615
config ARCH_SELECTS_KEXEC_FILE
616616
def_bool y

arch/riscv/Kconfig

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -686,9 +686,7 @@ config ARCH_SELECTS_KEXEC_FILE
686686
select KEXEC_ELF
687687

688688
config ARCH_SUPPORTS_KEXEC_PURGATORY
689-
def_bool KEXEC_FILE
690-
depends on CRYPTO=y
691-
depends on CRYPTO_SHA256=y
689+
def_bool ARCH_SUPPORTS_KEXEC_FILE
692690

693691
config ARCH_SUPPORTS_CRASH_DUMP
694692
def_bool y

arch/s390/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,13 @@ config ARCH_SUPPORTS_KEXEC
252252
def_bool y
253253

254254
config ARCH_SUPPORTS_KEXEC_FILE
255-
def_bool CRYPTO && CRYPTO_SHA256 && CRYPTO_SHA256_S390
255+
def_bool y
256256

257257
config ARCH_SUPPORTS_KEXEC_SIG
258258
def_bool MODULE_SIG_FORMAT
259259

260260
config ARCH_SUPPORTS_KEXEC_PURGATORY
261-
def_bool KEXEC_FILE
261+
def_bool y
262262

263263
config ARCH_SUPPORTS_CRASH_DUMP
264264
def_bool y

arch/x86/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,15 +2034,15 @@ config ARCH_SUPPORTS_KEXEC
20342034
def_bool y
20352035

20362036
config ARCH_SUPPORTS_KEXEC_FILE
2037-
def_bool X86_64 && CRYPTO && CRYPTO_SHA256
2037+
def_bool X86_64
20382038

20392039
config ARCH_SELECTS_KEXEC_FILE
20402040
def_bool y
20412041
depends on KEXEC_FILE
20422042
select HAVE_IMA_KEXEC if IMA
20432043

20442044
config ARCH_SUPPORTS_KEXEC_PURGATORY
2045-
def_bool KEXEC_FILE
2045+
def_bool y
20462046

20472047
config ARCH_SUPPORTS_KEXEC_SIG
20482048
def_bool y

drivers/nvme/host/fc.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2548,24 +2548,17 @@ nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
25482548
* the controller. Abort any ios on the association and let the
25492549
* create_association error path resolve things.
25502550
*/
2551-
enum nvme_ctrl_state state;
2552-
unsigned long flags;
2553-
2554-
spin_lock_irqsave(&ctrl->lock, flags);
2555-
state = ctrl->ctrl.state;
2556-
if (state == NVME_CTRL_CONNECTING) {
2557-
set_bit(ASSOC_FAILED, &ctrl->flags);
2558-
spin_unlock_irqrestore(&ctrl->lock, flags);
2551+
if (ctrl->ctrl.state == NVME_CTRL_CONNECTING) {
25592552
__nvme_fc_abort_outstanding_ios(ctrl, true);
2553+
set_bit(ASSOC_FAILED, &ctrl->flags);
25602554
dev_warn(ctrl->ctrl.device,
25612555
"NVME-FC{%d}: transport error during (re)connect\n",
25622556
ctrl->cnum);
25632557
return;
25642558
}
2565-
spin_unlock_irqrestore(&ctrl->lock, flags);
25662559

25672560
/* Otherwise, only proceed if in LIVE state - e.g. on first error */
2568-
if (state != NVME_CTRL_LIVE)
2561+
if (ctrl->ctrl.state != NVME_CTRL_LIVE)
25692562
return;
25702563

25712564
dev_warn(ctrl->ctrl.device,
@@ -3179,16 +3172,12 @@ nvme_fc_create_association(struct nvme_fc_ctrl *ctrl)
31793172
else
31803173
ret = nvme_fc_recreate_io_queues(ctrl);
31813174
}
3182-
3183-
spin_lock_irqsave(&ctrl->lock, flags);
31843175
if (!ret && test_bit(ASSOC_FAILED, &ctrl->flags))
31853176
ret = -EIO;
3186-
if (ret) {
3187-
spin_unlock_irqrestore(&ctrl->lock, flags);
3177+
if (ret)
31883178
goto out_term_aen_ops;
3189-
}
3179+
31903180
changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_LIVE);
3191-
spin_unlock_irqrestore(&ctrl->lock, flags);
31923181

31933182
ctrl->ctrl.nr_reconnects = 0;
31943183

drivers/platform/x86/intel/pmc/adl.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,16 +314,13 @@ int adl_core_init(struct pmc_dev *pmcdev)
314314
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
315315
int ret;
316316

317+
pmcdev->suspend = cnl_suspend;
318+
pmcdev->resume = cnl_resume;
319+
317320
pmc->map = &adl_reg_map;
318321
ret = get_primary_reg_base(pmc);
319322
if (ret)
320323
return ret;
321324

322-
/* Due to a hardware limitation, the GBE LTR blocks PC10
323-
* when a cable is attached. Tell the PMC to ignore it.
324-
*/
325-
dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
326-
pmc_core_send_ltr_ignore(pmcdev, 3);
327-
328325
return 0;
329326
}

drivers/platform/x86/intel/pmc/cnp.c

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -204,21 +204,35 @@ const struct pmc_reg_map cnp_reg_map = {
204204
.etr3_offset = ETR3_OFFSET,
205205
};
206206

207+
void cnl_suspend(struct pmc_dev *pmcdev)
208+
{
209+
/*
210+
* Due to a hardware limitation, the GBE LTR blocks PC10
211+
* when a cable is attached. To unblock PC10 during suspend,
212+
* tell the PMC to ignore it.
213+
*/
214+
pmc_core_send_ltr_ignore(pmcdev, 3, 1);
215+
}
216+
217+
int cnl_resume(struct pmc_dev *pmcdev)
218+
{
219+
pmc_core_send_ltr_ignore(pmcdev, 3, 0);
220+
221+
return pmc_core_resume_common(pmcdev);
222+
}
223+
207224
int cnp_core_init(struct pmc_dev *pmcdev)
208225
{
209226
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
210227
int ret;
211228

229+
pmcdev->suspend = cnl_suspend;
230+
pmcdev->resume = cnl_resume;
231+
212232
pmc->map = &cnp_reg_map;
213233
ret = get_primary_reg_base(pmc);
214234
if (ret)
215235
return ret;
216236

217-
/* Due to a hardware limitation, the GBE LTR blocks PC10
218-
* when a cable is attached. Tell the PMC to ignore it.
219-
*/
220-
dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
221-
pmc_core_send_ltr_ignore(pmcdev, 3);
222-
223237
return 0;
224238
}

drivers/platform/x86/intel/pmc/core.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ static int pmc_core_pll_show(struct seq_file *s, void *unused)
460460
}
461461
DEFINE_SHOW_ATTRIBUTE(pmc_core_pll);
462462

463-
int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value)
463+
int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value, int ignore)
464464
{
465465
struct pmc *pmc;
466466
const struct pmc_reg_map *map;
@@ -498,7 +498,10 @@ int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value)
498498
mutex_lock(&pmcdev->lock);
499499

500500
reg = pmc_core_reg_read(pmc, map->ltr_ignore_offset);
501-
reg |= BIT(ltr_index);
501+
if (ignore)
502+
reg |= BIT(ltr_index);
503+
else
504+
reg &= ~BIT(ltr_index);
502505
pmc_core_reg_write(pmc, map->ltr_ignore_offset, reg);
503506

504507
mutex_unlock(&pmcdev->lock);
@@ -521,7 +524,7 @@ static ssize_t pmc_core_ltr_ignore_write(struct file *file,
521524
if (err)
522525
return err;
523526

524-
err = pmc_core_send_ltr_ignore(pmcdev, value);
527+
err = pmc_core_send_ltr_ignore(pmcdev, value, 1);
525528

526529
return err == 0 ? count : err;
527530
}
@@ -1279,6 +1282,9 @@ static __maybe_unused int pmc_core_suspend(struct device *dev)
12791282
struct pmc_dev *pmcdev = dev_get_drvdata(dev);
12801283
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
12811284

1285+
if (pmcdev->suspend)
1286+
pmcdev->suspend(pmcdev);
1287+
12821288
/* Check if the syspend will actually use S0ix */
12831289
if (pm_suspend_via_firmware())
12841290
return 0;

drivers/platform/x86/intel/pmc/core.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ struct pmc {
363363
* @s0ix_counter: S0ix residency (step adjusted)
364364
* @num_lpm_modes: Count of enabled modes
365365
* @lpm_en_modes: Array of enabled modes from lowest to highest priority
366+
* @suspend: Function to perform platform specific suspend
366367
* @resume: Function to perform platform specific resume
367368
*
368369
* pmc_dev contains info about power management controller device.
@@ -379,6 +380,7 @@ struct pmc_dev {
379380
u64 s0ix_counter;
380381
int num_lpm_modes;
381382
int lpm_en_modes[LPM_MAX_NUM_MODES];
383+
void (*suspend)(struct pmc_dev *pmcdev);
382384
int (*resume)(struct pmc_dev *pmcdev);
383385

384386
bool has_die_c6;
@@ -486,7 +488,7 @@ extern const struct pmc_bit_map *mtl_ioem_lpm_maps[];
486488
extern const struct pmc_reg_map mtl_ioem_reg_map;
487489

488490
extern void pmc_core_get_tgl_lpm_reqs(struct platform_device *pdev);
489-
extern int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value);
491+
int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value, int ignore);
490492

491493
int pmc_core_resume_common(struct pmc_dev *pmcdev);
492494
int get_primary_reg_base(struct pmc *pmc);
@@ -500,6 +502,9 @@ int tgl_core_init(struct pmc_dev *pmcdev);
500502
int adl_core_init(struct pmc_dev *pmcdev);
501503
int mtl_core_init(struct pmc_dev *pmcdev);
502504

505+
void cnl_suspend(struct pmc_dev *pmcdev);
506+
int cnl_resume(struct pmc_dev *pmcdev);
507+
503508
#define pmc_for_each_mode(i, mode, pmcdev) \
504509
for (i = 0, mode = pmcdev->lpm_en_modes[i]; \
505510
i < pmcdev->num_lpm_modes; \

0 commit comments

Comments
 (0)