Skip to content

Commit

Permalink
Merge tag 'v5.15.151' into 5.15-main
Browse files Browse the repository at this point in the history
This is the 5.15.151 stable release

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmXogAMACgkQONu9yGCS
# aT4u9Q/+LMOVzmgMPWkZFql87GEiFbUfbXi3rCO5XAwWnPPnFLr4qnhZKl3shaLt
# dWCgKuFOpNviWVWcKjUw/d/49Bt7vR8rW3l11NLI5d30SroT3lD5pA1Y5bWDWT33
# 9dNejZtXEJYT4oAITg+6DG9MbqLk/3Dkh4QVXIlEu7F70Yovgtki9z9Jv1cegaHU
# fb0mys5yb04b074H2Gmj0/qDUNRVmFRkz4vutF99xojlQRCwqlzXzqvdZJnuenl3
# J6otRgwPvZSg3PzRSLxTWI2/6ot+zGA8sNmS0s73qyU7U+kjanVp5uTZbi2VP9BN
# h7CUtl8moK/tFa+xIPFaOSaCS4FUS9DX+LifsV8FH0c+rXaMhy5yCDBezrRQg2gf
# QXG/umXGi+Wv4uT4KkVbywZtdZp6dvNL7TZtPd7p+MSAe8+/QXn5QI4yRlokvDoR
# iUVi4JClRCFYJHLJLdzOFuKzgQHK1Kg82duf8RDspbp5ukq62OYavXjRWoxgTDvd
# Uro8tO8blZ3Tdp6Y1uCS+US+nGdrDkgmbVV2LN3UyH26A2ic6x5h4hLCCcGYWGaV
# zEDfohi8fzlzHsneHXS6lKc/CBFonUQ0ME63TsS8JP/dOwO75QeM3iusjfXQFFnL
# oTj+mhMgJ2fRSsoEV63RSzaTG5ewL25pmfTUnYMQHWiziJBe5cE=
# =UFYi
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Mar  6 15:38:59 2024 CET
# gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
# gpg: Can't check signature: No public key
  • Loading branch information
frank-w committed Apr 20, 2024
2 parents eee62e4 + 5743626 commit d3ae3d1
Show file tree
Hide file tree
Showing 69 changed files with 984 additions and 522 deletions.
2 changes: 1 addition & 1 deletion Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 15
SUBLEVEL = 150
SUBLEVEL = 151
EXTRAVERSION =
NAME = Trick or Treat

Expand Down
2 changes: 1 addition & 1 deletion arch/riscv/include/asm/pgtable.h
Expand Up @@ -58,7 +58,7 @@
* Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
* is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
*/
#define vmemmap ((struct page *)VMEMMAP_START)
#define vmemmap ((struct page *)VMEMMAP_START - (phys_ram_base >> PAGE_SHIFT))

#define PCI_IO_SIZE SZ_16M
#define PCI_IO_END VMEMMAP_START
Expand Down
178 changes: 91 additions & 87 deletions arch/x86/kernel/cpu/intel.c
Expand Up @@ -181,6 +181,90 @@ static bool bad_spectre_microcode(struct cpuinfo_x86 *c)
return false;
}

#define MSR_IA32_TME_ACTIVATE 0x982

/* Helpers to access TME_ACTIVATE MSR */
#define TME_ACTIVATE_LOCKED(x) (x & 0x1)
#define TME_ACTIVATE_ENABLED(x) (x & 0x2)

#define TME_ACTIVATE_POLICY(x) ((x >> 4) & 0xf) /* Bits 7:4 */
#define TME_ACTIVATE_POLICY_AES_XTS_128 0

#define TME_ACTIVATE_KEYID_BITS(x) ((x >> 32) & 0xf) /* Bits 35:32 */

#define TME_ACTIVATE_CRYPTO_ALGS(x) ((x >> 48) & 0xffff) /* Bits 63:48 */
#define TME_ACTIVATE_CRYPTO_AES_XTS_128 1

/* Values for mktme_status (SW only construct) */
#define MKTME_ENABLED 0
#define MKTME_DISABLED 1
#define MKTME_UNINITIALIZED 2
static int mktme_status = MKTME_UNINITIALIZED;

static void detect_tme_early(struct cpuinfo_x86 *c)
{
u64 tme_activate, tme_policy, tme_crypto_algs;
int keyid_bits = 0, nr_keyids = 0;
static u64 tme_activate_cpu0 = 0;

rdmsrl(MSR_IA32_TME_ACTIVATE, tme_activate);

if (mktme_status != MKTME_UNINITIALIZED) {
if (tme_activate != tme_activate_cpu0) {
/* Broken BIOS? */
pr_err_once("x86/tme: configuration is inconsistent between CPUs\n");
pr_err_once("x86/tme: MKTME is not usable\n");
mktme_status = MKTME_DISABLED;

/* Proceed. We may need to exclude bits from x86_phys_bits. */
}
} else {
tme_activate_cpu0 = tme_activate;
}

if (!TME_ACTIVATE_LOCKED(tme_activate) || !TME_ACTIVATE_ENABLED(tme_activate)) {
pr_info_once("x86/tme: not enabled by BIOS\n");
mktme_status = MKTME_DISABLED;
return;
}

if (mktme_status != MKTME_UNINITIALIZED)
goto detect_keyid_bits;

pr_info("x86/tme: enabled by BIOS\n");

tme_policy = TME_ACTIVATE_POLICY(tme_activate);
if (tme_policy != TME_ACTIVATE_POLICY_AES_XTS_128)
pr_warn("x86/tme: Unknown policy is active: %#llx\n", tme_policy);

tme_crypto_algs = TME_ACTIVATE_CRYPTO_ALGS(tme_activate);
if (!(tme_crypto_algs & TME_ACTIVATE_CRYPTO_AES_XTS_128)) {
pr_err("x86/mktme: No known encryption algorithm is supported: %#llx\n",
tme_crypto_algs);
mktme_status = MKTME_DISABLED;
}
detect_keyid_bits:
keyid_bits = TME_ACTIVATE_KEYID_BITS(tme_activate);
nr_keyids = (1UL << keyid_bits) - 1;
if (nr_keyids) {
pr_info_once("x86/mktme: enabled by BIOS\n");
pr_info_once("x86/mktme: %d KeyIDs available\n", nr_keyids);
} else {
pr_info_once("x86/mktme: disabled by BIOS\n");
}

if (mktme_status == MKTME_UNINITIALIZED) {
/* MKTME is usable */
mktme_status = MKTME_ENABLED;
}

/*
* KeyID bits effectively lower the number of physical address
* bits. Update cpuinfo_x86::x86_phys_bits accordingly.
*/
c->x86_phys_bits -= keyid_bits;
}

static void early_init_intel(struct cpuinfo_x86 *c)
{
u64 misc_enable;
Expand Down Expand Up @@ -332,6 +416,13 @@ static void early_init_intel(struct cpuinfo_x86 *c)
*/
if (detect_extended_topology_early(c) < 0)
detect_ht_early(c);

/*
* Adjust the number of physical bits early because it affects the
* valid bits of the MTRR mask registers.
*/
if (cpu_has(c, X86_FEATURE_TME))
detect_tme_early(c);
}

static void bsp_init_intel(struct cpuinfo_x86 *c)
Expand Down Expand Up @@ -492,90 +583,6 @@ static void srat_detect_node(struct cpuinfo_x86 *c)
#endif
}

#define MSR_IA32_TME_ACTIVATE 0x982

/* Helpers to access TME_ACTIVATE MSR */
#define TME_ACTIVATE_LOCKED(x) (x & 0x1)
#define TME_ACTIVATE_ENABLED(x) (x & 0x2)

#define TME_ACTIVATE_POLICY(x) ((x >> 4) & 0xf) /* Bits 7:4 */
#define TME_ACTIVATE_POLICY_AES_XTS_128 0

#define TME_ACTIVATE_KEYID_BITS(x) ((x >> 32) & 0xf) /* Bits 35:32 */

#define TME_ACTIVATE_CRYPTO_ALGS(x) ((x >> 48) & 0xffff) /* Bits 63:48 */
#define TME_ACTIVATE_CRYPTO_AES_XTS_128 1

/* Values for mktme_status (SW only construct) */
#define MKTME_ENABLED 0
#define MKTME_DISABLED 1
#define MKTME_UNINITIALIZED 2
static int mktme_status = MKTME_UNINITIALIZED;

static void detect_tme(struct cpuinfo_x86 *c)
{
u64 tme_activate, tme_policy, tme_crypto_algs;
int keyid_bits = 0, nr_keyids = 0;
static u64 tme_activate_cpu0 = 0;

rdmsrl(MSR_IA32_TME_ACTIVATE, tme_activate);

if (mktme_status != MKTME_UNINITIALIZED) {
if (tme_activate != tme_activate_cpu0) {
/* Broken BIOS? */
pr_err_once("x86/tme: configuration is inconsistent between CPUs\n");
pr_err_once("x86/tme: MKTME is not usable\n");
mktme_status = MKTME_DISABLED;

/* Proceed. We may need to exclude bits from x86_phys_bits. */
}
} else {
tme_activate_cpu0 = tme_activate;
}

if (!TME_ACTIVATE_LOCKED(tme_activate) || !TME_ACTIVATE_ENABLED(tme_activate)) {
pr_info_once("x86/tme: not enabled by BIOS\n");
mktme_status = MKTME_DISABLED;
return;
}

if (mktme_status != MKTME_UNINITIALIZED)
goto detect_keyid_bits;

pr_info("x86/tme: enabled by BIOS\n");

tme_policy = TME_ACTIVATE_POLICY(tme_activate);
if (tme_policy != TME_ACTIVATE_POLICY_AES_XTS_128)
pr_warn("x86/tme: Unknown policy is active: %#llx\n", tme_policy);

tme_crypto_algs = TME_ACTIVATE_CRYPTO_ALGS(tme_activate);
if (!(tme_crypto_algs & TME_ACTIVATE_CRYPTO_AES_XTS_128)) {
pr_err("x86/mktme: No known encryption algorithm is supported: %#llx\n",
tme_crypto_algs);
mktme_status = MKTME_DISABLED;
}
detect_keyid_bits:
keyid_bits = TME_ACTIVATE_KEYID_BITS(tme_activate);
nr_keyids = (1UL << keyid_bits) - 1;
if (nr_keyids) {
pr_info_once("x86/mktme: enabled by BIOS\n");
pr_info_once("x86/mktme: %d KeyIDs available\n", nr_keyids);
} else {
pr_info_once("x86/mktme: disabled by BIOS\n");
}

if (mktme_status == MKTME_UNINITIALIZED) {
/* MKTME is usable */
mktme_status = MKTME_ENABLED;
}

/*
* KeyID bits effectively lower the number of physical address
* bits. Update cpuinfo_x86::x86_phys_bits accordingly.
*/
c->x86_phys_bits -= keyid_bits;
}

static void init_cpuid_fault(struct cpuinfo_x86 *c)
{
u64 msr;
Expand Down Expand Up @@ -712,9 +719,6 @@ static void init_intel(struct cpuinfo_x86 *c)

init_ia32_feat_ctl(c);

if (cpu_has(c, X86_FEATURE_TME))
detect_tme(c);

init_intel_misc_features(c);

split_lock_init();
Expand Down
3 changes: 3 additions & 0 deletions drivers/cpufreq/intel_pstate.c
Expand Up @@ -2787,6 +2787,9 @@ static void intel_cpufreq_adjust_perf(unsigned int cpunum,
if (min_pstate < cpu->min_perf_ratio)
min_pstate = cpu->min_perf_ratio;

if (min_pstate > cpu->max_perf_ratio)
min_pstate = cpu->max_perf_ratio;

max_pstate = min(cap_pstate, cpu->max_perf_ratio);
if (max_pstate < min_pstate)
max_pstate = min_pstate;
Expand Down
21 changes: 11 additions & 10 deletions drivers/dma/fsl-qdma.c
Expand Up @@ -109,6 +109,7 @@
#define FSL_QDMA_CMD_WTHROTL_OFFSET 20
#define FSL_QDMA_CMD_DSEN_OFFSET 19
#define FSL_QDMA_CMD_LWC_OFFSET 16
#define FSL_QDMA_CMD_PF BIT(17)

/* Field definition for Descriptor status */
#define QDMA_CCDF_STATUS_RTE BIT(5)
Expand Down Expand Up @@ -384,7 +385,8 @@ static void fsl_qdma_comp_fill_memcpy(struct fsl_qdma_comp *fsl_comp,
qdma_csgf_set_f(csgf_dest, len);
/* Descriptor Buffer */
cmd = cpu_to_le32(FSL_QDMA_CMD_RWTTYPE <<
FSL_QDMA_CMD_RWTTYPE_OFFSET);
FSL_QDMA_CMD_RWTTYPE_OFFSET) |
FSL_QDMA_CMD_PF;
sdf->data = QDMA_SDDF_CMD(cmd);

cmd = cpu_to_le32(FSL_QDMA_CMD_RWTTYPE <<
Expand Down Expand Up @@ -1201,10 +1203,6 @@ static int fsl_qdma_probe(struct platform_device *pdev)
if (!fsl_qdma->queue)
return -ENOMEM;

ret = fsl_qdma_irq_init(pdev, fsl_qdma);
if (ret)
return ret;

fsl_qdma->irq_base = platform_get_irq_byname(pdev, "qdma-queue0");
if (fsl_qdma->irq_base < 0)
return fsl_qdma->irq_base;
Expand Down Expand Up @@ -1243,16 +1241,19 @@ static int fsl_qdma_probe(struct platform_device *pdev)

platform_set_drvdata(pdev, fsl_qdma);

ret = dma_async_device_register(&fsl_qdma->dma_dev);
ret = fsl_qdma_reg_init(fsl_qdma);
if (ret) {
dev_err(&pdev->dev,
"Can't register NXP Layerscape qDMA engine.\n");
dev_err(&pdev->dev, "Can't Initialize the qDMA engine.\n");
return ret;
}

ret = fsl_qdma_reg_init(fsl_qdma);
ret = fsl_qdma_irq_init(pdev, fsl_qdma);
if (ret)
return ret;

ret = dma_async_device_register(&fsl_qdma->dma_dev);
if (ret) {
dev_err(&pdev->dev, "Can't Initialize the qDMA engine.\n");
dev_err(&pdev->dev, "Can't register NXP Layerscape qDMA engine.\n");
return ret;
}

Expand Down
2 changes: 0 additions & 2 deletions drivers/dma/ptdma/ptdma-dmaengine.c
Expand Up @@ -361,8 +361,6 @@ int pt_dmaengine_register(struct pt_device *pt)
chan->vc.desc_free = pt_do_cleanup;
vchan_init(&chan->vc, dma_dev);

dma_set_mask_and_coherent(pt->dev, DMA_BIT_MASK(64));

ret = dma_async_device_register(dma_dev);
if (ret)
goto err_reg;
Expand Down
2 changes: 1 addition & 1 deletion drivers/firmware/efi/capsule-loader.c
Expand Up @@ -292,7 +292,7 @@ static int efi_capsule_open(struct inode *inode, struct file *file)
return -ENOMEM;
}

cap_info->phys = kzalloc(sizeof(void *), GFP_KERNEL);
cap_info->phys = kzalloc(sizeof(phys_addr_t), GFP_KERNEL);
if (!cap_info->phys) {
kfree(cap_info->pages);
kfree(cap_info);
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpio/gpio-74x164.c
Expand Up @@ -127,8 +127,6 @@ static int gen_74x164_probe(struct spi_device *spi)
if (IS_ERR(chip->gpiod_oe))
return PTR_ERR(chip->gpiod_oe);

gpiod_set_value_cansleep(chip->gpiod_oe, 1);

spi_set_drvdata(spi, chip);

chip->gpio_chip.label = spi->modalias;
Expand All @@ -153,6 +151,8 @@ static int gen_74x164_probe(struct spi_device *spi)
goto exit_destroy;
}

gpiod_set_value_cansleep(chip->gpiod_oe, 1);

ret = gpiochip_add_data(&chip->gpio_chip, chip);
if (!ret)
return 0;
Expand Down
10 changes: 5 additions & 5 deletions drivers/gpio/gpiolib.c
Expand Up @@ -774,11 +774,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,

ret = gpiochip_irqchip_init_valid_mask(gc);
if (ret)
goto err_remove_acpi_chip;
goto err_free_hogs;

ret = gpiochip_irqchip_init_hw(gc);
if (ret)
goto err_remove_acpi_chip;
goto err_remove_irqchip_mask;

ret = gpiochip_add_irqchip(gc, lock_key, request_key);
if (ret)
Expand All @@ -803,13 +803,13 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
gpiochip_irqchip_remove(gc);
err_remove_irqchip_mask:
gpiochip_irqchip_free_valid_mask(gc);
err_remove_acpi_chip:
err_free_hogs:
gpiochip_free_hogs(gc);
acpi_gpiochip_remove(gc);
gpiochip_remove_pin_ranges(gc);
err_remove_of_chip:
gpiochip_free_hogs(gc);
of_gpiochip_remove(gc);
err_free_gpiochip_mask:
gpiochip_remove_pin_ranges(gc);
gpiochip_free_valid_mask(gc);
if (gdev->dev.release) {
/* release() has been registered by gpiochip_setup_dev() */
Expand Down
11 changes: 4 additions & 7 deletions drivers/gpu/drm/bridge/lontium-lt8912b.c
Expand Up @@ -571,6 +571,10 @@ static int lt8912_bridge_attach(struct drm_bridge *bridge,
if (ret)
goto error;

ret = lt8912_attach_dsi(lt);
if (ret)
goto error;

return 0;

error:
Expand Down Expand Up @@ -726,15 +730,8 @@ static int lt8912_probe(struct i2c_client *client,

drm_bridge_add(&lt->bridge);

ret = lt8912_attach_dsi(lt);
if (ret)
goto err_attach;

return 0;

err_attach:
drm_bridge_remove(&lt->bridge);
lt8912_free_i2c(lt);
err_i2c:
lt8912_put_dt(lt);
err_dt_parse:
Expand Down

0 comments on commit d3ae3d1

Please sign in to comment.