Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
3bfee4d
clockevents/drivers/i8253: Fix stop sequence for timer 0
dwmw2 Aug 2, 2024
4933606
sched/isolation: Prevent boot crash when the boot CPU is nohz_full
oleg-nesterov Apr 11, 2024
9b34ec8
zram: fix NULL pointer in comp_algorithm_show()
Nov 8, 2024
91eb186
hrtimer: Use and report correct timerslack values for realtime tasks
fmoessbauer Aug 14, 2024
79bb7a6
bpf: Use raw_spinlock_t in ringbuf
walac Sep 20, 2024
95d3e0a
tcp: fix races in tcp_abort()
edumazet May 28, 2024
120f120
tcp: fix forever orphan socket caused by tcp_abort
kuroa-me Aug 26, 2024
3ea7d70
fbdev: hyperv_fb: iounmap() the correct memory when removing a device
mhklinux Feb 9, 2025
ddc4b73
pinctrl: bcm281xx: Fix incorrect regmap max_registers value
refractionware Feb 7, 2025
b40d2a8
netfilter: nft_ct: Use __refcount_inc() for per-CPU nft_ct_pcpu_templ…
Feb 17, 2025
164e97e
ice: fix memory leak in aRFS after reset
gnitka Jan 23, 2025
243e8b7
netfilter: nf_conncount: garbage collection is not skipped when jiffi…
njensen-akamai Feb 27, 2025
fe940c7
sched: address a potential NULL pointer dereference in the GRED sched…
Varde7918 Mar 5, 2025
9ad43c9
wifi: cfg80211: cancel wiphy_work before freeing wiphy
Miriam-Rachel Mar 6, 2025
2b8bf37
Bluetooth: hci_event: Fix enabling passive scanning
Vudentz Feb 28, 2025
68f6da0
Revert "Bluetooth: hci_core: Fix sleeping function called from invali…
Vudentz Mar 4, 2025
fab03ab
net/mlx5: Fill out devlink dev info only for PFs
Mar 6, 2025
82f7ba4
net: dsa: mv88e6xxx: Verify after ATU Load ops
Mar 6, 2025
572e416
net: mctp i2c: Copy headers if cloned
mkj Mar 6, 2025
5fff25d
netpoll: hold rcu read lock in __netpoll_send_skb()
leitao Mar 6, 2025
1f39848
drm/hyperv: Fix address space leak when Hyper-V DRM device is removed
mhklinux Feb 10, 2025
e6ab567
Drivers: hv: vmbus: Don't release fb_mmio resource in vmbus_free_mmio()
mhklinux Mar 10, 2025
500eac4
net/mlx5: handle errors in mlx5_chains_create_table()
ISCAS-Vulab Mar 7, 2025
2252aa2
eth: bnxt: do not update checksum in bnxt_xdp_build_skb()
TaeheeYoo Mar 9, 2025
747ccd8
net: switchdev: Convert blocking notification chain to a raw one
Mar 5, 2025
4f4a216
bonding: fix incorrect MAC address setting to receive NS messages
liuhangbin Mar 6, 2025
3bd164f
netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple i…
hyperenju Mar 9, 2025
aa7e41b
ipvs: prevent integer overflow in do_ip_vs_get_ctl()
Mar 10, 2025
61ed219
net_sched: Prevent creation of classes with TC_H_ROOT
congwang Mar 6, 2025
62341e8
netfilter: nft_exthdr: fix offset with ipv4_find_option()
amkgi Mar 1, 2025
6172ae1
gre: Fix IPv6 link-local address generation.
Mar 7, 2025
3fd47f9
net: openvswitch: remove misbehaving actions length check
igsilya Mar 8, 2025
10071d6
net/mlx5: Lag, Check shared fdb before creating MultiPort E-Switch
shayshyi Mar 10, 2025
0163853
net/mlx5: Bridge, fix the crash caused by LAG state check
Mar 10, 2025
2f1012d
net/mlx5e: Prevent bridge link show failure for non-eswitch-allowed d…
cjubran Mar 10, 2025
5e7038a
nvme-fc: go straight to connecting state when initializing
igaw Jan 9, 2025
3e90745
nvme-fc: do not ignore connectivity loss during connecting
igaw Jan 9, 2025
fc66266
hrtimers: Mark is_migration_base() with __always_inline
andy-shev Jan 16, 2025
aef9d15
powercap: call put_device() on an error path in powercap_register_con…
joehattori Jan 10, 2025
0635490
iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in ibft_attr_show_n…
yukariatlas Jan 14, 2025
73f4091
sched/debug: Provide slice length for fair tasks
cloehle Jan 29, 2025
ea5dfe7
platform/x86/intel: pmc: fix ltr decode in pmc_core_ltr_show()
dmikand Jan 23, 2025
9d9b726
scsi: core: Use GFP_NOIO to avoid circular locking dependency
rikvanriel Jan 28, 2025
eb9e348
scsi: ufs: core: Fix error return with query response
sh043lee Jan 18, 2025
c753e28
scsi: qla1280: Fix kernel oops when debug level > 2
linmag7 Jan 25, 2025
4155452
ACPI: resource: IRQ override for Eluktronics MECH-17
Kolgann Jan 27, 2025
2214d78
smb: client: fix noisy when tree connecting to DFS interlink targets
Feb 5, 2025
9740a06
alpha/elf: Fix misc/setarch test of util-linux by removing 32bit support
ebiederm Jan 13, 2025
f09f66d
vboxsf: fix building with GCC 15
Jan 21, 2025
94f6883
HID: intel-ish-hid: fix the length of MNG_SYNC_FW_CLOCK in doorbell
lixuzha Jan 22, 2025
3c1e760
HID: intel-ish-hid: Send clock sync message immediately after reset
lixuzha Jan 22, 2025
404f2c2
HID: ignore non-functional sensor in HP 5MP Camera
acelan Jan 15, 2025
7c1355d
usb: phy: generic: Use proper helper for property detection
tq-steina Jan 20, 2025
5870421
HID: topre: Fix n-key rollover on Realforce R3S TKL boards
helpvisa Jan 29, 2025
4a5ba20
HID: hid-apple: Apple Magic Keyboard a3203 USB-C support
Jan 12, 2025
87aa132
HID: apple: fix up the F6 key on the Omoton KB066 keyboard
alexhenrie Jan 17, 2025
82aba63
objtool: Ignore dangling jump table entries
jpoimboe Jan 14, 2025
38afafb
sched: Clarify wake_up_q()'s write to task->wake_q.next
thejh Jan 29, 2025
2847b39
platform/x86: thinkpad_acpi: Fix invalid fan speed on ThinkPad X120e
Feb 3, 2025
159a01a
platform/x86: thinkpad_acpi: Support for V9 DYTC platform profiles
mrhpearson Feb 6, 2025
a2d5be9
s390/cio: Fix CHPID "configure" attribute caching
oberpar Jan 31, 2025
ec8d8ac
thermal/cpufreq_cooling: Remove structure member documentation
dlezcano Feb 11, 2025
e6dea32
Xen/swiotlb: mark xen_swiotlb_fixup() __init
jbeulich Feb 12, 2025
b67e773
Bluetooth: L2CAP: Fix slab-use-after-free Read in l2cap_send_cmd
Vudentz Jan 16, 2025
1564eb7
selftests/bpf: Fix invalid flag of recv()
mrpre Jan 22, 2025
e81d95a
ASoC: simple-card-utils.c: add missing dlc->of_node
morimoto Feb 4, 2025
aaae6bc
ALSA: hda/realtek: Limit mic boost on Positivo ARN50
drosdeck Feb 1, 2025
9197c1a
ASoC: rsnd: indicate unsupported clock rate
morimoto Feb 5, 2025
a1e569c
ASoC: rsnd: don't indicate warning on rsnd_kctrl_accept_runtime()
morimoto Feb 5, 2025
ae40871
ASoC: rsnd: adjust convert rate limitation
morimoto Feb 5, 2025
d2edd6e
ASoC: arizona/madera: use fsleep() in up/down DAPM event delays.
Feb 5, 2025
05fc4cc
ASoC: SOF: Intel: hda: add softdep pre to snd-hda-codec-hdmi module
terry182 Feb 6, 2025
894cc41
ASoC: SOF: amd: Handle IPC replies before FW_BOOT_COMPLETE
cristicc Feb 7, 2025
7b5b76c
net: wwan: mhi_wwan_mbim: Silence sequence number glitch errors
stephan-gh Feb 12, 2025
8b3644d
io-wq: backoff when retrying worker creation
ps-ushankar Feb 8, 2025
1768580
nvme-pci: quirk Acer FA100 for non-uniqueue identifiers
CE1CECL Feb 18, 2025
65619d1
nvme-tcp: add basic support for the C2HTermReq PDU
maurizio-lombardi Feb 17, 2025
57bf036
nvmet-rdma: recheck queue state is LIVE in state lock in recv done
Feb 16, 2025
1b90941
apple-nvme: Release power domains when probe fails
marcan Feb 13, 2025
672ebb7
cifs: Treat unhandled directory name surrogate reparse points as moun…
pali Sep 17, 2024
b3d684a
sctp: Fix undefined behavior in left shift operation
eleanorLYJ Feb 18, 2025
37e6c65
nvme: only allow entering LIVE from CONNECTING state
igaw Feb 14, 2025
a6be787
ASoC: tas2770: Fix volume scale
marcan Feb 8, 2025
0cb3d9f
ASoC: tas2764: Fix power control mask
marcan Feb 18, 2025
58effcd
ASoC: tas2764: Set the SDOUT polarity correctly
marcan Feb 18, 2025
2dd2f13
fuse: don't truncate cached, mutated symlink
Feb 20, 2025
558216c
drm/vkms: Round fixp2int conversion in lerp_u16
Dec 20, 2024
44623b9
perf/x86/intel: Use better start period for frequency mode
Jan 17, 2025
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
7 changes: 2 additions & 5 deletions Documentation/timers/no_hz.rst
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,8 @@ adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain
online to handle timekeeping tasks in order to ensure that system
calls like gettimeofday() returns accurate values on adaptive-tick CPUs.
(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running
user processes to observe slight drifts in clock rate.) Therefore, the
boot CPU is prohibited from entering adaptive-ticks mode. Specifying a
"nohz_full=" mask that includes the boot CPU will result in a boot-time
error message, and the boot CPU will be removed from the mask. Note that
this means that your system must have at least two CPUs in order for
user processes to observe slight drifts in clock rate.) Note that this
means that your system must have at least two CPUs in order for
CONFIG_NO_HZ_FULL=y to do anything for you.

Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
Expand Down
6 changes: 1 addition & 5 deletions arch/alpha/include/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
/*
* This is used to ensure we don't load something for the wrong architecture.
*/
#define elf_check_arch(x) ((x)->e_machine == EM_ALPHA)
#define elf_check_arch(x) (((x)->e_machine == EM_ALPHA) && !((x)->e_flags & EF_ALPHA_32BIT))

/*
* These are used to set parameters in the core dumps.
Expand Down Expand Up @@ -139,10 +139,6 @@ extern int dump_elf_task(elf_greg_t *dest, struct task_struct *task);
: amask (AMASK_CIX) ? "ev6" : "ev67"); \
})

#define SET_PERSONALITY(EX) \
set_personality(((EX).e_flags & EF_ALPHA_32BIT) \
? PER_LINUX_32BIT : PER_LINUX)

extern int alpha_l1i_cacheshape;
extern int alpha_l1d_cacheshape;
extern int alpha_l2_cacheshape;
Expand Down
2 changes: 1 addition & 1 deletion arch/alpha/include/asm/pgtable.h
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)

extern void paging_init(void);

/* We have our own get_unmapped_area to cope with ADDR_LIMIT_32BIT. */
/* We have our own get_unmapped_area */
#define HAVE_ARCH_UNMAPPED_AREA

#endif /* _ALPHA_PGTABLE_H */
8 changes: 2 additions & 6 deletions arch/alpha/include/asm/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,19 @@
#ifndef __ASM_ALPHA_PROCESSOR_H
#define __ASM_ALPHA_PROCESSOR_H

#include <linux/personality.h> /* for ADDR_LIMIT_32BIT */

/*
* We have a 42-bit user address space: 4TB user VM...
*/
#define TASK_SIZE (0x40000000000UL)

#define STACK_TOP \
(current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL)
#define STACK_TOP (0x00120000000UL)

#define STACK_TOP_MAX 0x00120000000UL

/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
*/
#define TASK_UNMAPPED_BASE \
((current->personality & ADDR_LIMIT_32BIT) ? 0x40000000 : TASK_SIZE / 2)
#define TASK_UNMAPPED_BASE (TASK_SIZE / 2)

/* This is dead. Everything has been moved to thread_info. */
struct thread_struct { };
Expand Down
11 changes: 2 additions & 9 deletions arch/alpha/kernel/osf_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -1211,8 +1211,7 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
return ret;
}

/* Get an address range which is currently unmapped. Similar to the
generic version except that we know how to honor ADDR_LIMIT_32BIT. */
/* Get an address range which is currently unmapped. */

static unsigned long
arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
Expand All @@ -1234,13 +1233,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
unsigned long len, unsigned long pgoff,
unsigned long flags)
{
unsigned long limit;

/* "32 bit" actually means 31 bit, since pointers sign extend. */
if (current->personality & ADDR_LIMIT_32BIT)
limit = 0x80000000;
else
limit = TASK_SIZE;
unsigned long limit = TASK_SIZE;

if (len > limit)
return -ENOMEM;
Expand Down
85 changes: 85 additions & 0 deletions arch/x86/events/intel/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -3870,6 +3870,85 @@ static inline bool intel_pmu_has_cap(struct perf_event *event, int idx)
return test_bit(idx, (unsigned long *)&intel_cap->capabilities);
}

static u64 intel_pmu_freq_start_period(struct perf_event *event)
{
int type = event->attr.type;
u64 config, factor;
s64 start;

/*
* The 127 is the lowest possible recommended SAV (sample after value)
* for a 4000 freq (default freq), according to the event list JSON file.
* Also, assume the workload is idle 50% time.
*/
factor = 64 * 4000;
if (type != PERF_TYPE_HARDWARE && type != PERF_TYPE_HW_CACHE)
goto end;

/*
* The estimation of the start period in the freq mode is
* based on the below assumption.
*
* For a cycles or an instructions event, 1GHZ of the
* underlying platform, 1 IPC. The workload is idle 50% time.
* The start period = 1,000,000,000 * 1 / freq / 2.
* = 500,000,000 / freq
*
* Usually, the branch-related events occur less than the
* instructions event. According to the Intel event list JSON
* file, the SAV (sample after value) of a branch-related event
* is usually 1/4 of an instruction event.
* The start period of branch-related events = 125,000,000 / freq.
*
* The cache-related events occurs even less. The SAV is usually
* 1/20 of an instruction event.
* The start period of cache-related events = 25,000,000 / freq.
*/
config = event->attr.config & PERF_HW_EVENT_MASK;
if (type == PERF_TYPE_HARDWARE) {
switch (config) {
case PERF_COUNT_HW_CPU_CYCLES:
case PERF_COUNT_HW_INSTRUCTIONS:
case PERF_COUNT_HW_BUS_CYCLES:
case PERF_COUNT_HW_STALLED_CYCLES_FRONTEND:
case PERF_COUNT_HW_STALLED_CYCLES_BACKEND:
case PERF_COUNT_HW_REF_CPU_CYCLES:
factor = 500000000;
break;
case PERF_COUNT_HW_BRANCH_INSTRUCTIONS:
case PERF_COUNT_HW_BRANCH_MISSES:
factor = 125000000;
break;
case PERF_COUNT_HW_CACHE_REFERENCES:
case PERF_COUNT_HW_CACHE_MISSES:
factor = 25000000;
break;
default:
goto end;
}
}

if (type == PERF_TYPE_HW_CACHE)
factor = 25000000;
end:
/*
* Usually, a prime or a number with less factors (close to prime)
* is chosen as an SAV, which makes it less likely that the sampling
* period synchronizes with some periodic event in the workload.
* Minus 1 to make it at least avoiding values near power of twos
* for the default freq.
*/
start = DIV_ROUND_UP_ULL(factor, event->attr.sample_freq) - 1;

if (start > x86_pmu.max_period)
start = x86_pmu.max_period;

if (x86_pmu.limit_period)
x86_pmu.limit_period(event, &start);

return start;
}

static int intel_pmu_hw_config(struct perf_event *event)
{
int ret = x86_pmu_hw_config(event);
Expand All @@ -3881,6 +3960,12 @@ static int intel_pmu_hw_config(struct perf_event *event)
if (ret)
return ret;

if (event->attr.freq && event->attr.sample_freq) {
event->hw.sample_period = intel_pmu_freq_start_period(event);
event->hw.last_period = event->hw.sample_period;
local64_set(&event->hw.period_left, event->hw.sample_period);
}

if (event->attr.precise_ip) {
if ((event->attr.config & INTEL_ARCH_EVENT_MASK) == INTEL_FIXED_VLBR_EVENT)
return -EINVAL;
Expand Down
11 changes: 0 additions & 11 deletions arch/x86/kernel/cpu/mshyperv.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kexec.h>
#include <linux/i8253.h>
#include <linux/random.h>
#include <asm/processor.h>
#include <asm/hypervisor.h>
Expand Down Expand Up @@ -575,16 +574,6 @@ static void __init ms_hyperv_init_platform(void)
if (efi_enabled(EFI_BOOT))
x86_platform.get_nmi_reason = hv_get_nmi_reason;

/*
* Hyper-V VMs have a PIT emulation quirk such that zeroing the
* counter register during PIT shutdown restarts the PIT. So it
* continues to interrupt @18.2 HZ. Setting i8253_clear_counter
* to false tells pit_shutdown() not to zero the counter so that
* the PIT really is shutdown. Generation 2 VMs don't have a PIT,
* and setting this value has no effect.
*/
i8253_clear_counter_on_shutdown = false;

#if IS_ENABLED(CONFIG_HYPERV)
if ((hv_get_isolation_type() == HV_ISOLATION_TYPE_VBS) ||
ms_hyperv.paravisor_present)
Expand Down
6 changes: 6 additions & 0 deletions drivers/acpi/resource.c
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,12 @@ static const struct dmi_system_id maingear_laptop[] = {
DMI_MATCH(DMI_BOARD_NAME, "RP-15"),
},
},
{
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Eluktronics Inc."),
DMI_MATCH(DMI_BOARD_NAME, "MECH-17"),
},
},
{
/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */
.matches = {
Expand Down
4 changes: 2 additions & 2 deletions drivers/block/zram/zram_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -2247,6 +2247,8 @@ static int zram_add(void)
zram->disk->private_data = zram;
snprintf(zram->disk->disk_name, 16, "zram%d", device_id);

comp_algorithm_set(zram, ZRAM_PRIMARY_COMP, default_compressor);

/* Actual capacity set using sysfs (/sys/block/zram<id>/disksize */
set_capacity(zram->disk, 0);
/* zram devices sort of resembles non-rotational disks */
Expand Down Expand Up @@ -2281,8 +2283,6 @@ static int zram_add(void)
if (ret)
goto out_cleanup_disk;

comp_algorithm_set(zram, ZRAM_PRIMARY_COMP, default_compressor);

zram_debugfs_register(zram);
pr_info("Added device: %s\n", zram->disk->disk_name);
return device_id;
Expand Down
36 changes: 25 additions & 11 deletions drivers/clocksource/i8253.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,6 @@
DEFINE_RAW_SPINLOCK(i8253_lock);
EXPORT_SYMBOL(i8253_lock);

/*
* Handle PIT quirk in pit_shutdown() where zeroing the counter register
* restarts the PIT, negating the shutdown. On platforms with the quirk,
* platform specific code can set this to false.
*/
bool i8253_clear_counter_on_shutdown __ro_after_init = true;

#ifdef CONFIG_CLKSRC_I8253
/*
* Since the PIT overflows every tick, its not very useful
Expand Down Expand Up @@ -112,12 +105,33 @@ void clockevent_i8253_disable(void)
{
raw_spin_lock(&i8253_lock);

/*
* Writing the MODE register should stop the counter, according to
* the datasheet. This appears to work on real hardware (well, on
* modern Intel and AMD boxes; I didn't dig the Pegasos out of the
* shed).
*
* However, some virtual implementations differ, and the MODE change
* doesn't have any effect until either the counter is written (KVM
* in-kernel PIT) or the next interrupt (QEMU). And in those cases,
* it may not stop the *count*, only the interrupts. Although in
* the virt case, that probably doesn't matter, as the value of the
* counter will only be calculated on demand if the guest reads it;
* it's the interrupts which cause steal time.
*
* Hyper-V apparently has a bug where even in mode 0, the IRQ keeps
* firing repeatedly if the counter is running. But it *does* do the
* right thing when the MODE register is written.
*
* So: write the MODE and then load the counter, which ensures that
* the IRQ is stopped on those buggy virt implementations. And then
* write the MODE again, which is the right way to stop it.
*/
outb_p(0x30, PIT_MODE);
outb_p(0, PIT_CH0);
outb_p(0, PIT_CH0);

if (i8253_clear_counter_on_shutdown) {
outb_p(0, PIT_CH0);
outb_p(0, PIT_CH0);
}
outb_p(0x30, PIT_MODE);

raw_spin_unlock(&i8253_lock);
}
Expand Down
5 changes: 4 additions & 1 deletion drivers/firmware/iscsi_ibft.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,10 @@ static ssize_t ibft_attr_show_nic(void *data, int type, char *buf)
str += sprintf_ipaddr(str, nic->ip_addr);
break;
case ISCSI_BOOT_ETH_SUBNET_MASK:
val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1));
if (nic->subnet_mask_prefix > 32)
val = cpu_to_be32(~0);
else
val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1));
str += sprintf(str, "%pI4", &val);
break;
case ISCSI_BOOT_ETH_PREFIX_LEN:
Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/hyperv/hyperv_drm_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ static int hyperv_vmbus_probe(struct hv_device *hdev,
return 0;

err_free_mmio:
iounmap(hv->vram);
vmbus_free_mmio(hv->mem->start, hv->fb_size);
err_vmbus_close:
vmbus_close(hdev->channel);
Expand All @@ -175,6 +176,7 @@ static void hyperv_vmbus_remove(struct hv_device *hdev)
vmbus_close(hdev->channel);
hv_set_drvdata(hdev, NULL);

iounmap(hv->vram);
vmbus_free_mmio(hv->mem->start, hv->fb_size);
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/vkms/vkms_composer.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ static u16 lerp_u16(u16 a, u16 b, s64 t)

s64 delta = drm_fixp_mul(b_fp - a_fp, t);

return drm_fixp2int(a_fp + delta);
return drm_fixp2int_round(a_fp + delta);
}

static s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value)
Expand Down
3 changes: 2 additions & 1 deletion drivers/hid/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1151,7 +1151,8 @@ config HID_TOPRE
tristate "Topre REALFORCE keyboards"
depends on HID
help
Say Y for N-key rollover support on Topre REALFORCE R2 108/87 key keyboards.
Say Y for N-key rollover support on Topre REALFORCE R2 108/87 key and
Topre REALFORCE R3S 87 key keyboards.

config HID_THINGM
tristate "ThingM blink(1) USB RGB LED"
Expand Down
8 changes: 8 additions & 0 deletions drivers/hid/hid-apple.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2015)
table = magic_keyboard_2015_fn_keys;
else if (hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 ||
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 ||
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 ||
hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021)
table = apple2021_fn_keys;
Expand Down Expand Up @@ -530,6 +531,9 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
}
}

if (usage->hid == 0xc0301) /* Omoton KB066 quirk */
code = KEY_F6;

if (usage->code != code) {
input_event_with_scancode(input, usage->type, code, usage->hid, value);

Expand Down Expand Up @@ -1064,6 +1068,10 @@ static const struct hid_device_id apple_devices[] = {
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021),
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024),
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021),
.driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY },
{ HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021),
Expand Down
Loading
Loading