Skip to content

Commit b0299f6

Browse files
committed
Merge tag 'v6.6.99' into 6.6-main
This is the 6.6.99 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmh5JlMACgkQONu9yGCS # aT6C6RAAoAIXHKNtf7WDTsT/Gxl6+ndhBulC/jLtcWoua2UVOaDih/sQGVnExQKq # 7AxrhnS2pY4O4oyQIfwOwkL7BMo4z497AUITlI/eJz9VepePaDt4eRlrGNFQ4hyW # EINXJ6EaTtmqWe/FLXN1xW+pIqcygk7LflITNZ8uyDzXYkksYRFe1S0ZuKeHQ3xy # J2dsjZ0YBM/JSVw0abQ36lX8As9PGHvwl+HvJ8kQKdCdpcWiKK7K4lVQ90Wgmtjp # rJFxFwAhNXK530Kgs6hAQnhZyOhXcZDFTGxnofg0ojDWqCZeqIBGwY1rVwWiQKsp # j6NgHq/nphPDXLfoiR7xC3PZHbS81Q9ojuSBdDiRxYt7DxX5DMVzwgWJabQhh2dh # aLoJG35r8JJVCZtln2qpCr0LNPw2YJ0OsMBIxQMGtumf8e20V68IYQMqG5JZi3Kr # PVr0P2d0q1/7QBFiMGng9H0ZvHLcqEx34Hyah5ZYuPaYrZwRUKFPUnCbSFY0mcea # eS19ZDEGg5sJ0QM0duWkBZVDORn665VoJnZz0nd5MAMnyvEQ3Fw+5E09R6XRYZ2N # wasAXbn+NqPRQYFaxr3Bbg3eCfXUJaGZvShMAYbFZNsM4PIZ6XPpTrgY34qyZlAO # v1UqegUCFzER2khWxUHLMIRg8sIsXz0hk3xJV3/5FHXuFxv9Iuk= # =M+jj # -----END PGP SIGNATURE----- # gpg: Signature made Thu Jul 17 18:35:31 2025 CEST # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents 10e9025 + d96eb99 commit b0299f6

File tree

117 files changed

+1937
-1031
lines changed

Some content is hidden

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

117 files changed

+1937
-1031
lines changed

Documentation/bpf/map_hash.rst

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,16 @@ attempts in order to enforce the LRU property which have increasing impacts on
233233
other CPUs involved in the following operation attempts:
234234

235235
- Attempt to use CPU-local state to batch operations
236-
- Attempt to fetch free nodes from global lists
236+
- Attempt to fetch ``target_free`` free nodes from global lists
237237
- Attempt to pull any node from a global list and remove it from the hashmap
238238
- Attempt to pull any node from any CPU's list and remove it from the hashmap
239239

240+
The number of nodes to borrow from the global list in a batch, ``target_free``,
241+
depends on the size of the map. Larger batch size reduces lock contention, but
242+
may also exhaust the global structure. The value is computed at map init to
243+
avoid exhaustion, by limiting aggregate reservation by all CPUs to half the map
244+
size. With a minimum of a single element and maximum budget of 128 at a time.
245+
240246
This algorithm is described visually in the following diagram. See the
241247
description in commit 3a08c2fd7634 ("bpf: LRU List") for a full explanation of
242248
the corresponding operations:

Documentation/bpf/map_lru_hash_update.dot

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ digraph {
3535
fn_bpf_lru_list_pop_free_to_local [shape=rectangle,fillcolor=2,
3636
label="Flush local pending,
3737
Rotate Global list, move
38-
LOCAL_FREE_TARGET
38+
target_free
3939
from global -> local"]
4040
// Also corresponds to:
4141
// fn__local_list_flush()
4242
// fn_bpf_lru_list_rotate()
4343
fn___bpf_lru_node_move_to_free[shape=diamond,fillcolor=2,
44-
label="Able to free\nLOCAL_FREE_TARGET\nnodes?"]
44+
label="Able to free\ntarget_free\nnodes?"]
4545

4646
fn___bpf_lru_list_shrink_inactive [shape=rectangle,fillcolor=3,
4747
label="Shrink inactive list
4848
up to remaining
49-
LOCAL_FREE_TARGET
49+
target_free
5050
(global LRU -> local)"]
5151
fn___bpf_lru_list_shrink [shape=diamond,fillcolor=2,
5252
label="> 0 entries in\nlocal free list?"]

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 = 98
4+
SUBLEVEL = 99
55
EXTRAVERSION =
66
NAME = Pinguïn Aangedreven
77

arch/um/drivers/vector_kern.c

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,35 +1600,19 @@ static void vector_eth_configure(
16001600

16011601
device->dev = dev;
16021602

1603-
*vp = ((struct vector_private)
1604-
{
1605-
.list = LIST_HEAD_INIT(vp->list),
1606-
.dev = dev,
1607-
.unit = n,
1608-
.options = get_transport_options(def),
1609-
.rx_irq = 0,
1610-
.tx_irq = 0,
1611-
.parsed = def,
1612-
.max_packet = get_mtu(def) + ETH_HEADER_OTHER,
1613-
/* TODO - we need to calculate headroom so that ip header
1614-
* is 16 byte aligned all the time
1615-
*/
1616-
.headroom = get_headroom(def),
1617-
.form_header = NULL,
1618-
.verify_header = NULL,
1619-
.header_rxbuffer = NULL,
1620-
.header_txbuffer = NULL,
1621-
.header_size = 0,
1622-
.rx_header_size = 0,
1623-
.rexmit_scheduled = false,
1624-
.opened = false,
1625-
.transport_data = NULL,
1626-
.in_write_poll = false,
1627-
.coalesce = 2,
1628-
.req_size = get_req_size(def),
1629-
.in_error = false,
1630-
.bpf = NULL
1631-
});
1603+
INIT_LIST_HEAD(&vp->list);
1604+
vp->dev = dev;
1605+
vp->unit = n;
1606+
vp->options = get_transport_options(def);
1607+
vp->parsed = def;
1608+
vp->max_packet = get_mtu(def) + ETH_HEADER_OTHER;
1609+
/*
1610+
* TODO - we need to calculate headroom so that ip header
1611+
* is 16 byte aligned all the time
1612+
*/
1613+
vp->headroom = get_headroom(def);
1614+
vp->coalesce = 2;
1615+
vp->req_size = get_req_size(def);
16321616

16331617
dev->features = dev->hw_features = (NETIF_F_SG | NETIF_F_FRAGLIST);
16341618
INIT_WORK(&vp->reset_tx, vector_reset_tx);

arch/x86/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ config X86
128128
select ARCH_WANTS_DYNAMIC_TASK_STRUCT
129129
select ARCH_WANTS_NO_INSTR
130130
select ARCH_WANT_GENERAL_HUGETLB
131-
select ARCH_WANT_HUGE_PMD_SHARE
131+
select ARCH_WANT_HUGE_PMD_SHARE if X86_64
132132
select ARCH_WANT_LD_ORPHAN_WARN
133133
select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP if X86_64
134134
select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP if X86_64

arch/x86/include/asm/msr-index.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@
575575
#define MSR_AMD64_OSVW_STATUS 0xc0010141
576576
#define MSR_AMD_PPIN_CTL 0xc00102f0
577577
#define MSR_AMD_PPIN 0xc00102f1
578+
#define MSR_AMD64_CPUID_FN_7 0xc0011002
578579
#define MSR_AMD64_CPUID_FN_1 0xc0011004
579580
#define MSR_AMD64_LS_CFG 0xc0011020
580581
#define MSR_AMD64_DC_CFG 0xc0011022

arch/x86/kernel/cpu/amd.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,6 +1154,13 @@ static void init_amd_zen2(struct cpuinfo_x86 *c)
11541154
{
11551155
fix_erratum_1386(c);
11561156
zen2_zenbleed_check(c);
1157+
1158+
/* Disable RDSEED on AMD Cyan Skillfish because of an error. */
1159+
if (c->x86_model == 0x47 && c->x86_stepping == 0x0) {
1160+
clear_cpu_cap(c, X86_FEATURE_RDSEED);
1161+
msr_clear_bit(MSR_AMD64_CPUID_FN_7, 18);
1162+
pr_emerg("RDSEED is not reliable on this platform; disabling.\n");
1163+
}
11571164
}
11581165

11591166
static void init_amd_zen3(struct cpuinfo_x86 *c)

arch/x86/kernel/cpu/mce/amd.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,6 @@ static void smca_configure(unsigned int bank, unsigned int cpu)
335335

336336
struct thresh_restart {
337337
struct threshold_block *b;
338-
int reset;
339338
int set_lvt_off;
340339
int lvt_off;
341340
u16 old_limit;
@@ -430,13 +429,13 @@ static void threshold_restart_bank(void *_tr)
430429

431430
rdmsr(tr->b->address, lo, hi);
432431

433-
if (tr->b->threshold_limit < (hi & THRESHOLD_MAX))
434-
tr->reset = 1; /* limit cannot be lower than err count */
435-
436-
if (tr->reset) { /* reset err count and overflow bit */
437-
hi =
438-
(hi & ~(MASK_ERR_COUNT_HI | MASK_OVERFLOW_HI)) |
439-
(THRESHOLD_MAX - tr->b->threshold_limit);
432+
/*
433+
* Reset error count and overflow bit.
434+
* This is done during init or after handling an interrupt.
435+
*/
436+
if (hi & MASK_OVERFLOW_HI || tr->set_lvt_off) {
437+
hi &= ~(MASK_ERR_COUNT_HI | MASK_OVERFLOW_HI);
438+
hi |= THRESHOLD_MAX - tr->b->threshold_limit;
440439
} else if (tr->old_limit) { /* change limit w/o reset */
441440
int new_count = (hi & THRESHOLD_MAX) +
442441
(tr->old_limit - tr->b->threshold_limit);
@@ -1049,13 +1048,20 @@ static const char *get_name(unsigned int cpu, unsigned int bank, struct threshol
10491048
}
10501049

10511050
bank_type = smca_get_bank_type(cpu, bank);
1052-
if (bank_type >= N_SMCA_BANK_TYPES)
1053-
return NULL;
10541051

10551052
if (b && (bank_type == SMCA_UMC || bank_type == SMCA_UMC_V2)) {
10561053
if (b->block < ARRAY_SIZE(smca_umc_block_names))
10571054
return smca_umc_block_names[b->block];
1058-
return NULL;
1055+
}
1056+
1057+
if (b && b->block) {
1058+
snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_block_%u", b->block);
1059+
return buf_mcatype;
1060+
}
1061+
1062+
if (bank_type >= N_SMCA_BANK_TYPES) {
1063+
snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_bank_%u", bank);
1064+
return buf_mcatype;
10591065
}
10601066

10611067
if (per_cpu(smca_bank_counts, cpu)[bank_type] == 1)

arch/x86/kernel/cpu/mce/core.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2704,15 +2704,9 @@ static int mce_cpu_dead(unsigned int cpu)
27042704
static int mce_cpu_online(unsigned int cpu)
27052705
{
27062706
struct timer_list *t = this_cpu_ptr(&mce_timer);
2707-
int ret;
27082707

27092708
mce_device_create(cpu);
2710-
2711-
ret = mce_threshold_create_device(cpu);
2712-
if (ret) {
2713-
mce_device_remove(cpu);
2714-
return ret;
2715-
}
2709+
mce_threshold_create_device(cpu);
27162710
mce_reenable_cpu();
27172711
mce_start_timer(t);
27182712
return 0;

arch/x86/kernel/cpu/mce/intel.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,7 @@ void mce_intel_feature_init(struct cpuinfo_x86 *c)
517517
void mce_intel_feature_clear(struct cpuinfo_x86 *c)
518518
{
519519
intel_clear_lmce();
520+
cmci_clear();
520521
}
521522

522523
bool intel_filter_mce(struct mce *m)

0 commit comments

Comments
 (0)