sync with OpenBSD -current

This commit is contained in:
purplerain 2024-02-23 23:30:59 +00:00
parent 589b22d46c
commit 0ad7fbc84b
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
16 changed files with 198 additions and 51 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: db_memrw.c,v 1.8 2017/04/30 13:04:49 mpi Exp $ */
/* $OpenBSD: db_memrw.c,v 1.9 2024/02/23 18:19:02 cheloha Exp $ */
/* $NetBSD: db_memrw.c,v 1.1 2003/04/26 18:39:27 fvdl Exp $ */
/*-
@ -60,9 +60,9 @@
* Read bytes from kernel address space for debugger.
*/
void
db_read_bytes(vaddr_t addr, size_t size, char *data)
db_read_bytes(vaddr_t addr, size_t size, void *datap)
{
char *src;
char *data = datap, *src;
src = (char *)addr;
@ -160,10 +160,10 @@ db_write_text(vaddr_t addr, size_t size, char *data)
* Write bytes to kernel address space for debugger.
*/
void
db_write_bytes(vaddr_t addr, size_t size, char *data)
db_write_bytes(vaddr_t addr, size_t size, void *datap)
{
extern char etext;
char *dst;
char *data = datap, *dst;
/* If any part is in kernel text, use db_write_text() */
if (addr >= KERNBASE && addr < (vaddr_t)&etext) {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: db_interface.c,v 1.20 2022/10/15 08:04:02 jsg Exp $ */
/* $OpenBSD: db_interface.c,v 1.21 2024/02/23 18:19:02 cheloha Exp $ */
/* $NetBSD: db_interface.c,v 1.34 2003/10/26 23:11:15 chris Exp $ */
/*
@ -182,9 +182,9 @@ db_validate_address(vaddr_t addr)
* Read bytes from kernel address space for debugger.
*/
void
db_read_bytes(vaddr_t addr, size_t size, char *data)
db_read_bytes(vaddr_t addr, size_t size, void *datap)
{
char *src = (char *)addr;
char *data = datap, *src = (char *)addr;
if (db_validate_address((u_int)src)) {
db_printf("address %p is invalid\n", src);
@ -301,11 +301,11 @@ db_write_text(vaddr_t addr, size_t size, char *data)
* Write bytes to kernel address space for debugger.
*/
void
db_write_bytes(vaddr_t addr, size_t size, char *data)
db_write_bytes(vaddr_t addr, size_t size, void *datap)
{
extern char etext[];
extern char kernel_text[];
char *dst;
char *data = datap, *dst;
size_t loop;
/* If any part is in kernel text, use db_write_text() */

View file

@ -1,4 +1,4 @@
/* $OpenBSD: cpu.c,v 1.104 2024/02/21 21:50:17 jsg Exp $ */
/* $OpenBSD: cpu.c,v 1.105 2024/02/23 21:52:12 kettenis Exp $ */
/*
* Copyright (c) 2016 Dale Rahn <drahn@dalerahn.com>
@ -938,10 +938,12 @@ cpu_attach(struct device *parent, struct device *dev, void *aux)
* Lenovo X13s ships with broken EL2 firmware that
* hangs the machine if we enable PAuth.
*/
if (hw_vendor && strcmp(hw_vendor, "LENOVO") == 0 &&
hw_prod && strncmp(hw_prod, "21BX", 4) == 0) {
cpu_id_aa64isar1 &= ~ID_AA64ISAR1_APA_MASK;
cpu_id_aa64isar1 &= ~ID_AA64ISAR1_GPA_MASK;
if (hw_vendor && hw_prod && strcmp(hw_vendor, "LENOVO") == 0) {
if (strncmp(hw_prod, "21BX", 4) == 0 ||
strncmp(hw_prod, "21BY", 4) == 0) {
cpu_id_aa64isar1 &= ~ID_AA64ISAR1_APA_MASK;
cpu_id_aa64isar1 &= ~ID_AA64ISAR1_GPA_MASK;
}
}
cpu_identify(ci);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: db_interface.c,v 1.14 2022/11/07 09:43:04 mpi Exp $ */
/* $OpenBSD: db_interface.c,v 1.15 2024/02/23 18:19:03 cheloha Exp $ */
/* $NetBSD: db_interface.c,v 1.34 2003/10/26 23:11:15 chris Exp $ */
/*
@ -197,9 +197,9 @@ db_validate_address(vaddr_t addr)
* Read bytes from kernel address space for debugger.
*/
void
db_read_bytes(vaddr_t addr, size_t size, char *data)
db_read_bytes(vaddr_t addr, size_t size, void *datap)
{
char *src = (char *)addr;
char *data = datap, *src = (char *)addr;
if (db_validate_address((vaddr_t)src)) {
db_printf("address %p is invalid\n", src);
@ -277,10 +277,10 @@ db_write_text(vaddr_t addr, size_t size, char *data)
* Write bytes to kernel address space for debugger.
*/
void
db_write_bytes(vaddr_t addr, size_t size, char *data)
db_write_bytes(vaddr_t addr, size_t size, void *datap)
{
extern char etext[];
char *dst;
char *data = datap, *dst;
size_t loop;
/* If any part is in kernel text, use db_write_text() */

View file

@ -1,4 +1,4 @@
/* $OpenBSD: efiboot.c,v 1.49 2024/02/04 18:44:23 kettenis Exp $ */
/* $OpenBSD: efiboot.c,v 1.50 2024/02/23 21:52:12 kettenis Exp $ */
/*
* Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
@ -1121,12 +1121,14 @@ efi_fdt(void)
if (hw_vendor == NULL || hw_prod == NULL)
return fdt_sys;
if (strcmp(hw_vendor, "LENOVO") == 0 &&
strncmp(hw_prod, "21BX", 4) == 0) {
fdt_load_override(FW_PATH
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb");
/* TODO: find a better mechanism */
cnset(ttydev("fb0"));
if (strcmp(hw_vendor, "LENOVO") == 0) {
if (strncmp(hw_prod, "21BX", 4) == 0 ||
strncmp(hw_prod, "21BY", 4) == 0) {
fdt_load_override(FW_PATH
"qcom/sc8280xp-lenovo-thinkpad-x13s.dtb");
/* TODO: find a better mechanism */
cnset(ttydev("fb0"));
}
}
return fdt_override ? fdt_override : fdt_sys;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: db_memrw.c,v 1.18 2020/09/23 15:13:26 deraadt Exp $ */
/* $OpenBSD: db_memrw.c,v 1.19 2024/02/23 18:19:03 cheloha Exp $ */
/* $NetBSD: db_memrw.c,v 1.6 1999/04/12 20:38:19 pk Exp $ */
/*
@ -50,9 +50,9 @@
* Read bytes from kernel address space for debugger.
*/
void
db_read_bytes(vaddr_t addr, size_t size, char *data)
db_read_bytes(vaddr_t addr, size_t size, void *datap)
{
char *src;
char *data = datap, *src;
src = (char *)addr;
while (size-- > 0)
@ -136,9 +136,9 @@ db_write_text(vaddr_t addr, size_t size, char *data)
* Write bytes to kernel address space for debugger.
*/
void
db_write_bytes(vaddr_t addr, size_t size, char *data)
db_write_bytes(vaddr_t addr, size_t size, void *datap)
{
char *dst;
char *data = datap, *dst;
extern char etext;
if (addr >= VM_MIN_KERNEL_ADDRESS &&

View file

@ -1,4 +1,4 @@
/* $OpenBSD: db_access.h,v 1.11 2020/01/20 15:58:23 visa Exp $ */
/* $OpenBSD: db_access.h,v 1.12 2024/02/23 18:19:02 cheloha Exp $ */
/* $NetBSD: db_access.h,v 1.6 1994/10/09 08:29:57 mycroft Exp $ */
/*
@ -36,5 +36,5 @@
db_expr_t db_get_value(vaddr_t, size_t, int);
void db_put_value(vaddr_t, size_t, db_expr_t);
void db_read_bytes(vaddr_t, size_t, char *);
void db_write_bytes(vaddr_t, size_t, char *);
void db_read_bytes(vaddr_t, size_t, void *);
void db_write_bytes(vaddr_t, size_t, void *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: kern_timeout.c,v 1.96 2023/10/12 15:32:38 cheloha Exp $ */
/* $OpenBSD: kern_timeout.c,v 1.97 2024/02/23 16:51:39 cheloha Exp $ */
/*
* Copyright (c) 2001 Thomas Nordin <nordin@openbsd.org>
* Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org>
@ -271,6 +271,7 @@ timeout_set_flags(struct timeout *to, void (*fn)(void *), void *arg, int kclock,
int flags)
{
KASSERT(!ISSET(flags, ~(TIMEOUT_PROC | TIMEOUT_MPSAFE)));
KASSERT(kclock >= KCLOCK_NONE && kclock < KCLOCK_MAX);
to->to_func = fn;
to->to_arg = arg;
@ -404,7 +405,7 @@ timeout_abs_ts(struct timeout *to, const struct timespec *abstime)
mtx_enter(&timeout_mutex);
KASSERT(ISSET(to->to_flags, TIMEOUT_INITIALIZED));
KASSERT(to->to_kclock != KCLOCK_NONE);
KASSERT(to->to_kclock == KCLOCK_UPTIME);
old_abstime = to->to_abstime;
to->to_abstime = *abstime;
@ -750,10 +751,14 @@ softclock(void *arg)
CIRCQ_REMOVE(&to->to_list);
if (to == first_new)
new = 1;
if (to->to_kclock != KCLOCK_NONE)
softclock_process_kclock_timeout(to, new);
else
if (to->to_kclock == KCLOCK_NONE)
softclock_process_tick_timeout(to, new);
else if (to->to_kclock == KCLOCK_UPTIME)
softclock_process_kclock_timeout(to, new);
else {
panic("%s: invalid to_clock: %d",
__func__, to->to_kclock);
}
}
tostat.tos_softclocks++;
needsproc = !CIRCQ_EMPTY(&timeout_proc);
@ -951,26 +956,34 @@ db_show_timeout(struct timeout *to, struct circq *bucket)
where = "thread-mp";
#endif
else {
if (to->to_kclock != KCLOCK_NONE)
if (to->to_kclock == KCLOCK_UPTIME)
wheel = timeout_wheel_kc;
else
else if (to->to_kclock == KCLOCK_NONE)
wheel = timeout_wheel;
else
goto invalid;
snprintf(buf, sizeof(buf), "%3ld/%1ld",
(bucket - wheel) % WHEELSIZE,
(bucket - wheel) / WHEELSIZE);
where = buf;
}
if (to->to_kclock != KCLOCK_NONE) {
if (to->to_kclock == KCLOCK_UPTIME) {
kc = &timeout_kclock[to->to_kclock];
timespecsub(&to->to_abstime, &kc->kc_lastscan, &remaining);
db_printf("%20s %8s %9s 0x%0*lx %s\n",
db_timespec(&remaining), db_kclock(to->to_kclock), where,
width, (ulong)to->to_arg, name);
} else {
} else if (to->to_kclock == KCLOCK_NONE) {
db_printf("%20d %8s %9s 0x%0*lx %s\n",
to->to_time - ticks, "ticks", where,
width, (ulong)to->to_arg, name);
}
} else
goto invalid;
return;
invalid:
db_printf("%s: timeout 0x%p: invalid to_kclock: %d",
__func__, to, to->to_kclock);
}
void