sync with OpenBSD -current

This commit is contained in:
purplerain 2024-08-06 04:33:39 +00:00
parent 04f8de21b3
commit 174ac28011
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
16 changed files with 313 additions and 118 deletions

View file

@ -798,8 +798,8 @@ static void reportGNUWarning(Symbol &sym, InputSectionBase &sec,
// report first occurance only // report first occurance only
sym.gwarn = false; sym.gwarn = false;
if (!gnuWarning.empty()) if (!gnuWarning.empty())
message(sec.getSrcMsg(sym, offset) + "(" + sec.getObjMsg(offset) + warn(sec.getSrcMsg(sym, offset) + "(" + sec.getObjMsg(offset) +
"): warning: " + gnuWarning); "): warning: " + gnuWarning);
} }
} }

View file

@ -50,6 +50,8 @@ typedef unsigned long ulg;
# define Z_U8 unsigned long # define Z_U8 unsigned long
# elif (ULLONG_MAX == 0xffffffffffffffff) # elif (ULLONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long long # define Z_U8 unsigned long long
# elif (ULONG_LONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long long
# elif (UINT_MAX == 0xffffffffffffffff) # elif (UINT_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned # define Z_U8 unsigned
# endif # endif

View file

@ -1,4 +1,4 @@
.\" $OpenBSD: bpf.4,v 1.45 2023/03/09 06:01:40 dlg Exp $ .\" $OpenBSD: bpf.4,v 1.46 2024/08/05 23:56:10 dlg Exp $
.\" $NetBSD: bpf.4,v 1.7 1995/09/27 18:31:50 thorpej Exp $ .\" $NetBSD: bpf.4,v 1.7 1995/09/27 18:31:50 thorpej Exp $
.\" .\"
.\" Copyright (c) 1990 The Regents of the University of California. .\" Copyright (c) 1990 The Regents of the University of California.
@ -23,7 +23,7 @@
.\" This document is derived in part from the enet man page (enet.4) .\" This document is derived in part from the enet man page (enet.4)
.\" distributed with 4.3BSD Unix. .\" distributed with 4.3BSD Unix.
.\" .\"
.Dd $Mdocdate: March 9 2023 $ .Dd $Mdocdate: August 5 2024 $
.Dt BPF 4 .Dt BPF 4
.Os .Os
.Sh NAME .Sh NAME
@ -315,6 +315,7 @@ the kernel buffer becoming readable.
By default, or when reset, the wait timeout is infinite, meaning By default, or when reset, the wait timeout is infinite, meaning
the age of packets in the kernel buffer does not make the buffer the age of packets in the kernel buffer does not make the buffer
readable. readable.
The maximum wait time that can be set is 5 minutes (300 seconds).
.Pp .Pp
.It Dv BIOCSETF Fa "struct bpf_program *" .It Dv BIOCSETF Fa "struct bpf_program *"
Sets the filter program used by the kernel to discard uninteresting packets. Sets the filter program used by the kernel to discard uninteresting packets.

View file

@ -1,4 +1,4 @@
.\" $OpenBSD: timeout.9,v 1.57 2023/10/12 15:32:38 cheloha Exp $ .\" $OpenBSD: timeout.9,v 1.58 2024/08/05 23:52:03 dlg Exp $
.\" .\"
.\" Copyright (c) 2000 Artur Grabowski <art@openbsd.org> .\" Copyright (c) 2000 Artur Grabowski <art@openbsd.org>
.\" Copyright (c) 2021, 2022 Scott Cheloha <cheloha@openbsd.org> .\" Copyright (c) 2021, 2022 Scott Cheloha <cheloha@openbsd.org>
@ -24,7 +24,7 @@
.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: October 12 2023 $ .Dd $Mdocdate: August 5 2024 $
.Dt TIMEOUT_SET 9 .Dt TIMEOUT_SET 9
.Os .Os
.Sh NAME .Sh NAME
@ -93,7 +93,7 @@
.Ft int .Ft int
.Fo timeout_add_nsec .Fo timeout_add_nsec
.Fa "struct timeout *to" .Fa "struct timeout *to"
.Fa "int nsecs" .Fa "uint64_t nsecs"
.Fc .Fc
.Ft int .Ft int
.Fo timeout_add_tv .Fo timeout_add_tv

View file

@ -1,4 +1,4 @@
/* $OpenBSD: intr.c,v 1.22 2024/06/26 01:40:49 jsg Exp $ */ /* $OpenBSD: intr.c,v 1.23 2024/08/05 13:55:34 kettenis Exp $ */
/* /*
* Copyright (c) 2011 Dale Rahn <drahn@openbsd.org> * Copyright (c) 2011 Dale Rahn <drahn@openbsd.org>
* *
@ -25,7 +25,7 @@
#include <dev/ofw/openfirm.h> #include <dev/ofw/openfirm.h>
uint32_t arm_intr_get_parent(int); int arm_intr_get_parent(int);
uint32_t arm_intr_map_msi(int, uint64_t *); uint32_t arm_intr_map_msi(int, uint64_t *);
void *arm_intr_prereg_establish_fdt(void *, int *, int, struct cpu_info *, void *arm_intr_prereg_establish_fdt(void *, int *, int, struct cpu_info *,
@ -94,17 +94,21 @@ arm_intr_string(void *cookie)
/* /*
* Find the interrupt parent by walking up the tree. * Find the interrupt parent by walking up the tree.
*/ */
uint32_t int
arm_intr_get_parent(int node) arm_intr_get_parent(int node)
{ {
uint32_t phandle = 0; uint32_t phandle;
while (node && !phandle) { while (node) {
phandle = OF_getpropint(node, "interrupt-parent", 0); phandle = OF_getpropint(node, "interrupt-parent", 0);
if (phandle)
return OF_getnodebyphandle(phandle);
node = OF_parent(node); node = OF_parent(node);
if (OF_getpropbool(node, "interrupt-controller"))
return node;
} }
return phandle; return 0;
} }
uint32_t uint32_t
@ -280,8 +284,6 @@ arm_intr_register_fdt(struct interrupt_controller *ic)
ic->ic_cells = OF_getpropint(ic->ic_node, "#interrupt-cells", 0); ic->ic_cells = OF_getpropint(ic->ic_node, "#interrupt-cells", 0);
ic->ic_phandle = OF_getpropint(ic->ic_node, "phandle", 0); ic->ic_phandle = OF_getpropint(ic->ic_node, "phandle", 0);
if (ic->ic_phandle == 0)
return;
KASSERT(ic->ic_cells <= MAX_INTERRUPT_CELLS); KASSERT(ic->ic_cells <= MAX_INTERRUPT_CELLS);
LIST_INSERT_HEAD(&interrupt_controllers, ic, ic_list); LIST_INSERT_HEAD(&interrupt_controllers, ic, ic_list);
@ -335,7 +337,8 @@ arm_intr_establish_fdt_idx_cpu(int node, int idx, int level, struct cpu_info *ci
int (*func)(void *), void *cookie, char *name) int (*func)(void *), void *cookie, char *name)
{ {
struct interrupt_controller *ic; struct interrupt_controller *ic;
int i, len, ncells, extended = 1; int i, len, ncells, parent;
int extended = 1;
uint32_t *cell, *cells, phandle; uint32_t *cell, *cells, phandle;
struct arm_intr_handle *ih; struct arm_intr_handle *ih;
void *val = NULL; void *val = NULL;
@ -350,9 +353,9 @@ arm_intr_establish_fdt_idx_cpu(int node, int idx, int level, struct cpu_info *ci
/* Old style. */ /* Old style. */
if (!extended) { if (!extended) {
phandle = arm_intr_get_parent(node); parent = arm_intr_get_parent(node);
LIST_FOREACH(ic, &interrupt_controllers, ic_list) { LIST_FOREACH(ic, &interrupt_controllers, ic_list) {
if (ic->ic_phandle == phandle) if (ic->ic_node == parent)
break; break;
} }
@ -563,12 +566,12 @@ arm_intr_parent_establish_fdt(void *cookie, int *cell, int level,
{ {
struct interrupt_controller *ic = cookie; struct interrupt_controller *ic = cookie;
struct arm_intr_handle *ih; struct arm_intr_handle *ih;
uint32_t phandle; int parent;
void *val; void *val;
phandle = arm_intr_get_parent(ic->ic_node); parent = arm_intr_get_parent(ic->ic_node);
LIST_FOREACH(ic, &interrupt_controllers, ic_list) { LIST_FOREACH(ic, &interrupt_controllers, ic_list) {
if (ic->ic_phandle == phandle) if (ic->ic_node == parent)
break; break;
} }
if (ic == NULL) if (ic == NULL)

View file

@ -1,4 +1,4 @@
/* $OpenBSD: acpibat.c,v 1.71 2024/06/24 15:56:07 mglocker Exp $ */ /* $OpenBSD: acpibat.c,v 1.72 2024/08/05 18:37:29 kettenis Exp $ */
/* /*
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org> * Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
* *
@ -279,13 +279,11 @@ acpibat_refresh(void *arg)
else if (sc->sc_bst.bst_state & BST_CHARGE) else if (sc->sc_bst.bst_state & BST_CHARGE)
strlcpy(sc->sc_sens[4].desc, "battery charging", strlcpy(sc->sc_sens[4].desc, "battery charging",
sizeof(sc->sc_sens[4].desc)); sizeof(sc->sc_sens[4].desc));
else if (sc->sc_bst.bst_state & BST_CRITICAL) { else
strlcpy(sc->sc_sens[4].desc, "battery critical",
sizeof(sc->sc_sens[4].desc));
sc->sc_sens[4].status = SENSOR_S_CRIT;
} else
strlcpy(sc->sc_sens[4].desc, "battery idle", strlcpy(sc->sc_sens[4].desc, "battery idle",
sizeof(sc->sc_sens[4].desc)); sizeof(sc->sc_sens[4].desc));
if (sc->sc_bst.bst_state & BST_CRITICAL)
sc->sc_sens[4].status = SENSOR_S_CRIT;
sc->sc_sens[4].value = sc->sc_bst.bst_state; sc->sc_sens[4].value = sc->sc_bst.bst_state;
if (sc->sc_bst.bst_rate == BST_UNKNOWN) { if (sc->sc_bst.bst_rate == BST_UNKNOWN) {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: mvgicp.c,v 1.5 2021/10/24 17:52:26 mpi Exp $ */ /* $OpenBSD: mvgicp.c,v 1.6 2024/08/05 18:39:34 kettenis Exp $ */
/* /*
* Copyright (c) 2019 Patrick Wildt <patrick@blueri.se> * Copyright (c) 2019 Patrick Wildt <patrick@blueri.se>
* *
@ -74,7 +74,7 @@ mvgicp_attach(struct device *parent, struct device *self, void *aux)
struct mvgicp_softc *sc = (struct mvgicp_softc *)self; struct mvgicp_softc *sc = (struct mvgicp_softc *)self;
struct fdt_attach_args *faa = aux; struct fdt_attach_args *faa = aux;
struct interrupt_controller *ic; struct interrupt_controller *ic;
uint32_t phandle; int node;
if (faa->fa_nreg < 1) { if (faa->fa_nreg < 1) {
printf(": no registers\n"); printf(": no registers\n");
@ -100,11 +100,11 @@ mvgicp_attach(struct device *parent, struct device *self, void *aux)
return; return;
} }
extern uint32_t fdt_intr_get_parent(int); extern int fdt_intr_get_parent(int);
phandle = fdt_intr_get_parent(faa->fa_node); node = fdt_intr_get_parent(faa->fa_node);
extern LIST_HEAD(, interrupt_controller) interrupt_controllers; extern LIST_HEAD(, interrupt_controller) interrupt_controllers;
LIST_FOREACH(ic, &interrupt_controllers, ic_list) { LIST_FOREACH(ic, &interrupt_controllers, ic_list) {
if (ic->ic_phandle == phandle) if (ic->ic_node == node)
break; break;
} }
sc->sc_parent_ic = ic; sc->sc_parent_ic = ic;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: qcpas.c,v 1.5 2024/08/04 20:10:38 mglocker Exp $ */ /* $OpenBSD: qcpas.c,v 1.6 2024/08/05 18:36:28 kettenis Exp $ */
/* /*
* Copyright (c) 2023 Patrick Wildt <patrick@blueri.se> * Copyright (c) 2023 Patrick Wildt <patrick@blueri.se>
* *
@ -21,6 +21,7 @@
#include <sys/malloc.h> #include <sys/malloc.h>
#include <sys/atomic.h> #include <sys/atomic.h>
#include <sys/exec_elf.h> #include <sys/exec_elf.h>
#include <sys/sensors.h>
#include <sys/task.h> #include <sys/task.h>
#include <machine/apmvar.h> #include <machine/apmvar.h>
@ -102,6 +103,14 @@ struct qcpas_softc {
struct task sc_glink_rx; struct task sc_glink_rx;
uint32_t sc_glink_max_channel; uint32_t sc_glink_max_channel;
TAILQ_HEAD(,qcpas_glink_channel) sc_glink_channels; TAILQ_HEAD(,qcpas_glink_channel) sc_glink_channels;
#ifndef SMALL_KERNEL
uint32_t sc_last_full_capacity;
uint32_t sc_warning_capacity;
uint32_t sc_low_capacity;
struct ksensor sc_sens[11];
struct ksensordev sc_sensdev;
#endif
}; };
int qcpas_match(struct device *, void *, void *); int qcpas_match(struct device *, void *, void *);
@ -271,6 +280,77 @@ qcpas_mountroot(struct device *self)
node = OF_getnodebyname(sc->sc_node, "glink-edge"); node = OF_getnodebyname(sc->sc_node, "glink-edge");
if (node) if (node)
qcpas_glink_attach(sc, node); qcpas_glink_attach(sc, node);
#ifndef SMALL_KERNEL
strlcpy(sc->sc_sensdev.xname, sc->sc_dev.dv_xname,
sizeof(sc->sc_sensdev.xname));
strlcpy(sc->sc_sens[0].desc, "last full capacity",
sizeof(sc->sc_sens[0].desc));
sc->sc_sens[0].type = SENSOR_WATTHOUR;
sc->sc_sens[0].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[0]);
strlcpy(sc->sc_sens[1].desc, "warning capacity",
sizeof(sc->sc_sens[1].desc));
sc->sc_sens[1].type = SENSOR_WATTHOUR;
sc->sc_sens[1].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[1]);
strlcpy(sc->sc_sens[2].desc, "low capacity",
sizeof(sc->sc_sens[2].desc));
sc->sc_sens[2].type = SENSOR_WATTHOUR;
sc->sc_sens[2].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[2]);
strlcpy(sc->sc_sens[3].desc, "voltage", sizeof(sc->sc_sens[3].desc));
sc->sc_sens[3].type = SENSOR_VOLTS_DC;
sc->sc_sens[3].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[3]);
strlcpy(sc->sc_sens[4].desc, "battery unknown",
sizeof(sc->sc_sens[4].desc));
sc->sc_sens[4].type = SENSOR_INTEGER;
sc->sc_sens[4].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[4]);
strlcpy(sc->sc_sens[5].desc, "rate", sizeof(sc->sc_sens[5].desc));
sc->sc_sens[5].type =SENSOR_WATTS;
sc->sc_sens[5].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[5]);
strlcpy(sc->sc_sens[6].desc, "remaining capacity",
sizeof(sc->sc_sens[6].desc));
sc->sc_sens[6].type = SENSOR_WATTHOUR;
sc->sc_sens[6].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[6]);
strlcpy(sc->sc_sens[7].desc, "current voltage",
sizeof(sc->sc_sens[7].desc));
sc->sc_sens[7].type = SENSOR_VOLTS_DC;
sc->sc_sens[7].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[7]);
strlcpy(sc->sc_sens[8].desc, "design capacity",
sizeof(sc->sc_sens[8].desc));
sc->sc_sens[8].type = SENSOR_WATTHOUR;
sc->sc_sens[8].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[8]);
strlcpy(sc->sc_sens[9].desc, "discharge cycles",
sizeof(sc->sc_sens[9].desc));
sc->sc_sens[9].type = SENSOR_INTEGER;
sc->sc_sens[9].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[9]);
strlcpy(sc->sc_sens[10].desc, "temperature",
sizeof(sc->sc_sens[10].desc));
sc->sc_sens[10].type = SENSOR_TEMP;
sc->sc_sens[10].flags = SENSOR_FUNKNOWN;
sensor_attach(&sc->sc_sensdev, &sc->sc_sens[10]);
sensordev_install(&sc->sc_sensdev);
#endif
} }
int int
@ -1178,6 +1258,12 @@ struct battmgr_bat_status {
uint32_t temperature; uint32_t temperature;
}; };
void qcpas_pmic_rtr_refresh(void *);
void qcpas_pmic_rtr_bat_info(struct qcpas_softc *,
struct battmgr_bat_info *);
void qcpas_pmic_rtr_bat_status(struct qcpas_softc *,
struct battmgr_bat_status *);
void void
qcpas_pmic_rtr_battmgr_req_info(void *cookie) qcpas_pmic_rtr_battmgr_req_info(void *cookie)
{ {
@ -1227,6 +1313,9 @@ qcpas_pmic_rtr_init(void *cookie)
qcpas_pmic_rtr_apm_cookie = cookie; qcpas_pmic_rtr_apm_cookie = cookie;
apm_setinfohook(qcpas_pmic_rtr_apminfo); apm_setinfohook(qcpas_pmic_rtr_apminfo);
#endif
#ifndef SMALL_KERNEL
sensor_task_register(cookie, qcpas_pmic_rtr_refresh, 5);
#endif #endif
return 0; return 0;
} }
@ -1234,12 +1323,10 @@ qcpas_pmic_rtr_init(void *cookie)
int int
qcpas_pmic_rtr_recv(void *cookie, uint8_t *buf, int len) qcpas_pmic_rtr_recv(void *cookie, uint8_t *buf, int len)
{ {
#if NAPM > 0 struct qcpas_glink_channel *ch = cookie;
static uint32_t last_full_capacity; struct qcpas_softc *sc = ch->ch_sc;
#endif
struct pmic_glink_hdr hdr; struct pmic_glink_hdr hdr;
uint32_t notification; uint32_t notification;
extern int hw_power;
if (len < sizeof(hdr)) { if (len < sizeof(hdr)) {
printf("%s: pmic glink message too small\n", printf("%s: pmic glink message too small\n",
@ -1282,67 +1369,21 @@ qcpas_pmic_rtr_recv(void *cookie, uint8_t *buf, int len)
return 0; return 0;
} }
bat = malloc(sizeof(*bat), M_TEMP, M_WAITOK); bat = malloc(sizeof(*bat), M_TEMP, M_WAITOK);
memcpy((void *)bat, buf + sizeof(hdr), sizeof(*bat)); memcpy(bat, buf + sizeof(hdr), sizeof(*bat));
#if NAPM > 0 qcpas_pmic_rtr_bat_info(sc, bat);
last_full_capacity = bat->last_full_capacity;
#endif
free(bat, M_TEMP, sizeof(*bat)); free(bat, M_TEMP, sizeof(*bat));
break; break;
} }
case BATTMGR_OPCODE_BAT_STATUS: { case BATTMGR_OPCODE_BAT_STATUS: {
struct battmgr_bat_status *bat; struct battmgr_bat_status *bat;
#if NAPM > 0
struct apm_power_info *info;
uint32_t delta;
#endif
if (len - sizeof(hdr) != sizeof(*bat)) { if (len - sizeof(hdr) != sizeof(*bat)) {
printf("%s: invalid battgmr bat status\n", printf("%s: invalid battgmr bat status\n",
__func__); __func__);
return 0; return 0;
} }
#if NAPM > 0
/* Needs BAT_INFO fist */
if (last_full_capacity == 0) {
wakeup(&qcpas_pmic_rtr_apm_power_info);
return 0;
}
#endif
bat = malloc(sizeof(*bat), M_TEMP, M_WAITOK); bat = malloc(sizeof(*bat), M_TEMP, M_WAITOK);
memcpy((void *)bat, buf + sizeof(hdr), sizeof(*bat)); memcpy(bat, buf + sizeof(hdr), sizeof(*bat));
#if NAPM > 0 qcpas_pmic_rtr_bat_status(sc, bat);
info = &qcpas_pmic_rtr_apm_power_info;
info->battery_life = ((bat->capacity * 100) /
last_full_capacity);
if (info->battery_life > 50)
info->battery_state = APM_BATT_HIGH;
else if (info->battery_life > 25)
info->battery_state = APM_BATT_LOW;
else
info->battery_state = APM_BATT_CRITICAL;
if (bat->battery_state & BATTMGR_BAT_STATE_CHARGING)
info->battery_state = APM_BATT_CHARGING;
else if (bat->battery_state & BATTMGR_BAT_STATE_CRITICAL_LOW)
info->battery_state = APM_BATT_CRITICAL;
if (bat->rate < 0)
delta = bat->capacity;
else
delta = last_full_capacity - bat->capacity;
if (bat->rate == 0)
info->minutes_left = -1;
else
info->minutes_left =
(60 * delta) / abs(bat->rate);
if (bat->power_state & BATTMGR_PWR_STATE_AC_ON) {
info->ac_state = APM_AC_ON;
hw_power = 1;
} else {
info->ac_state = APM_AC_OFF;
hw_power = 0;
}
wakeup(&qcpas_pmic_rtr_apm_power_info);
#endif
free(bat, M_TEMP, sizeof(*bat)); free(bat, M_TEMP, sizeof(*bat));
break; break;
} }
@ -1377,3 +1418,127 @@ qcpas_pmic_rtr_apminfo(struct apm_power_info *info)
return 0; return 0;
} }
#endif #endif
void
qcpas_pmic_rtr_refresh(void *arg)
{
qcpas_pmic_rtr_battmgr_req_status(arg);
}
void
qcpas_pmic_rtr_bat_info(struct qcpas_softc *sc, struct battmgr_bat_info *bat)
{
#ifndef SMALL_KERNEL
sc->sc_last_full_capacity = bat->last_full_capacity;
sc->sc_warning_capacity = bat->capacity_warning;
sc->sc_low_capacity = bat->capacity_low;
sc->sc_sens[0].value = bat->last_full_capacity * 1000;
sc->sc_sens[0].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[1].value = bat->capacity_warning * 1000;
sc->sc_sens[1].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[2].value = bat->capacity_low * 1000;
sc->sc_sens[2].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[3].value = bat->design_voltage * 1000;
sc->sc_sens[3].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[8].value = bat->design_capacity * 1000;
sc->sc_sens[8].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[9].value = bat->cycle_count;
sc->sc_sens[9].flags &= ~SENSOR_FUNKNOWN;
#endif
}
void
qcpas_pmic_rtr_bat_status(struct qcpas_softc *sc,
struct battmgr_bat_status *bat)
{
#if NAPM > 0
extern int hw_power;
struct apm_power_info *info = &qcpas_pmic_rtr_apm_power_info;
uint32_t delta;
#endif
#ifndef SMALL_KERNEL
if (bat->capacity >= sc->sc_last_full_capacity)
strlcpy(sc->sc_sens[4].desc, "battery full",
sizeof(sc->sc_sens[4].desc));
else if (bat->battery_state & BATTMGR_BAT_STATE_DISCHARGE)
strlcpy(sc->sc_sens[4].desc, "battery discharging",
sizeof(sc->sc_sens[4].desc));
else if (bat->battery_state & BATTMGR_BAT_STATE_CHARGING)
strlcpy(sc->sc_sens[4].desc, "battery charging",
sizeof(sc->sc_sens[4].desc));
else
strlcpy(sc->sc_sens[4].desc, "battery idle",
sizeof(sc->sc_sens[4].desc));
if (bat->battery_state & BATTMGR_BAT_STATE_CRITICAL_LOW)
sc->sc_sens[4].status = SENSOR_S_CRIT;
else
sc->sc_sens[4].status = SENSOR_S_OK;
sc->sc_sens[4].value = bat->battery_state;
sc->sc_sens[4].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[5].value = abs(bat->rate) * 1000;
sc->sc_sens[5].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[6].value = bat->capacity * 1000;
if (bat->capacity < sc->sc_low_capacity)
sc->sc_sens[6].status = SENSOR_S_CRIT;
else if (bat->capacity < sc->sc_warning_capacity)
sc->sc_sens[6].status = SENSOR_S_WARN;
else
sc->sc_sens[6].status = SENSOR_S_OK;
sc->sc_sens[6].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[7].value = bat->battery_voltage * 1000;
sc->sc_sens[7].flags &= ~SENSOR_FUNKNOWN;
sc->sc_sens[10].value = (bat->temperature * 10000) + 273150000;
sc->sc_sens[10].flags &= ~SENSOR_FUNKNOWN;
#endif
#if NAPM > 0
/* Needs BAT_INFO fist */
if (sc->sc_last_full_capacity == 0) {
wakeup(&qcpas_pmic_rtr_apm_power_info);
return;
}
info->battery_life =
((bat->capacity * 100) / sc->sc_last_full_capacity);
if (info->battery_life > 50)
info->battery_state = APM_BATT_HIGH;
else if (info->battery_life > 25)
info->battery_state = APM_BATT_LOW;
else
info->battery_state = APM_BATT_CRITICAL;
if (bat->battery_state & BATTMGR_BAT_STATE_CHARGING)
info->battery_state = APM_BATT_CHARGING;
else if (bat->battery_state & BATTMGR_BAT_STATE_CRITICAL_LOW)
info->battery_state = APM_BATT_CRITICAL;
if (bat->rate < 0)
delta = bat->capacity;
else
delta = sc->sc_last_full_capacity - bat->capacity;
if (bat->rate == 0)
info->minutes_left = -1;
else
info->minutes_left = (60 * delta) / abs(bat->rate);
if (bat->power_state & BATTMGR_PWR_STATE_AC_ON) {
info->ac_state = APM_AC_ON;
hw_power = 1;
} else {
info->ac_state = APM_AC_OFF;
hw_power = 0;
}
wakeup(&qcpas_pmic_rtr_apm_power_info);
#endif
}

View file

@ -1,4 +1,4 @@
/* $OpenBSD: kern_sysctl.c,v 1.430 2024/08/02 14:34:45 mvs Exp $ */ /* $OpenBSD: kern_sysctl.c,v 1.433 2024/08/05 18:47:29 mvs Exp $ */
/* $NetBSD: kern_sysctl.c,v 1.17 1996/05/20 17:49:05 mrg Exp $ */ /* $NetBSD: kern_sysctl.c,v 1.17 1996/05/20 17:49:05 mrg Exp $ */
/*- /*-
@ -172,26 +172,25 @@ sysctl_vslock(void *addr, size_t len)
{ {
int error; int error;
KERNEL_LOCK();
error = rw_enter(&sysctl_lock, RW_WRITE|RW_INTR); error = rw_enter(&sysctl_lock, RW_WRITE|RW_INTR);
if (error) if (error)
goto out; return (error);
KERNEL_LOCK();
if (addr) { if (addr) {
if (atop(len) > uvmexp.wiredmax - uvmexp.wired) { if (atop(len) > uvmexp.wiredmax - uvmexp.wired) {
error = ENOMEM; error = ENOMEM;
goto out2; goto out;
} }
error = uvm_vslock(curproc, addr, len, PROT_READ | PROT_WRITE); error = uvm_vslock(curproc, addr, len, PROT_READ | PROT_WRITE);
if (error) if (error)
goto out2; goto out;
} }
return (0); return (0);
out2:
rw_exit_write(&sysctl_lock);
out: out:
KERNEL_UNLOCK(); KERNEL_UNLOCK();
rw_exit_write(&sysctl_lock);
return (error); return (error);
} }
@ -202,8 +201,8 @@ sysctl_vsunlock(void *addr, size_t len)
if (addr) if (addr)
uvm_vsunlock(curproc, addr, len); uvm_vsunlock(curproc, addr, len);
rw_exit_write(&sysctl_lock);
KERNEL_UNLOCK(); KERNEL_UNLOCK();
rw_exit_write(&sysctl_lock);
} }
int int
@ -508,6 +507,12 @@ kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
return (sysctl_rdstring(oldp, oldlenp, newp, version)); return (sysctl_rdstring(oldp, oldlenp, newp, version));
case KERN_NUMVNODES: /* XXX numvnodes is a long */ case KERN_NUMVNODES: /* XXX numvnodes is a long */
return (sysctl_rdint(oldp, oldlenp, newp, numvnodes)); return (sysctl_rdint(oldp, oldlenp, newp, numvnodes));
case KERN_BOOTTIME: {
struct timeval bt;
memset(&bt, 0, sizeof bt);
microboottime(&bt);
return (sysctl_rdstruct(oldp, oldlenp, newp, &bt, sizeof bt));
}
case KERN_MBSTAT: { case KERN_MBSTAT: {
extern struct cpumem *mbstat; extern struct cpumem *mbstat;
uint64_t counters[MBSTAT_COUNT]; uint64_t counters[MBSTAT_COUNT];
@ -526,6 +531,30 @@ kern_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
return (sysctl_rdstruct(oldp, oldlenp, newp, return (sysctl_rdstruct(oldp, oldlenp, newp,
&mbs, sizeof(mbs))); &mbs, sizeof(mbs)));
} }
case KERN_OSREV:
case KERN_NFILES:
case KERN_TTYCOUNT:
case KERN_ARGMAX:
case KERN_POSIX1:
case KERN_NGROUPS:
case KERN_JOB_CONTROL:
case KERN_SAVED_IDS:
case KERN_MAXPARTITIONS:
case KERN_RAWPARTITION:
case KERN_NTHREADS:
case KERN_SOMAXCONN:
case KERN_SOMINCONN:
case KERN_FSYNC:
case KERN_SYSVMSG:
case KERN_SYSVSEM:
case KERN_SYSVSHM:
case KERN_FSCALE:
case KERN_CCPU:
case KERN_NPROCS:
case KERN_NETLIVELOCKS:
case KERN_AUTOCONF_SERIAL:
return (sysctl_bounded_arr(kern_vars, nitems(kern_vars), name,
namelen, oldp, oldlenp, newp, newlen));
} }
savelen = *oldlenp; savelen = *oldlenp;
@ -587,12 +616,6 @@ kern_sysctl_locked(int *name, u_int namelen, void *oldp, size_t *oldlenp,
return (error); return (error);
case KERN_CLOCKRATE: case KERN_CLOCKRATE:
return (sysctl_clockrate(oldp, oldlenp, newp)); return (sysctl_clockrate(oldp, oldlenp, newp));
case KERN_BOOTTIME: {
struct timeval bt;
memset(&bt, 0, sizeof bt);
microboottime(&bt);
return (sysctl_rdstruct(oldp, oldlenp, newp, &bt, sizeof bt));
}
case KERN_MSGBUFSIZE: case KERN_MSGBUFSIZE:
case KERN_CONSBUFSIZE: { case KERN_CONSBUFSIZE: {
struct msgbuf *mp; struct msgbuf *mp;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: kern_timeout.c,v 1.97 2024/02/23 16:51:39 cheloha Exp $ */ /* $OpenBSD: kern_timeout.c,v 1.98 2024/08/05 23:51:11 dlg Exp $ */
/* /*
* Copyright (c) 2001 Thomas Nordin <nordin@openbsd.org> * Copyright (c) 2001 Thomas Nordin <nordin@openbsd.org>
* Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org> * Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org>
@ -386,14 +386,17 @@ timeout_add_usec(struct timeout *to, int usecs)
} }
int int
timeout_add_nsec(struct timeout *to, int nsecs) timeout_add_nsec(struct timeout *to, uint64_t nsecs)
{ {
int to_ticks = nsecs / (tick * 1000); uint64_t to_ticks;
to_ticks = nsecs / (tick * 1000);
if (to_ticks > INT_MAX)
to_ticks = INT_MAX;
if (to_ticks == 0 && nsecs > 0) if (to_ticks == 0 && nsecs > 0)
to_ticks = 1; to_ticks = 1;
return timeout_add(to, to_ticks); return timeout_add(to, (int)to_ticks);
} }
int int

View file

@ -63,6 +63,8 @@ typedef unsigned long ulg;
# define Z_U8 unsigned long # define Z_U8 unsigned long
# elif (ULLONG_MAX == 0xffffffffffffffff) # elif (ULLONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long long # define Z_U8 unsigned long long
# elif (ULONG_LONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long long
# elif (UINT_MAX == 0xffffffffffffffff) # elif (UINT_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned # define Z_U8 unsigned
# endif # endif

View file

@ -1,4 +1,4 @@
/* $OpenBSD: bpf.c,v 1.222 2024/01/26 21:14:08 jan Exp $ */ /* $OpenBSD: bpf.c,v 1.223 2024/08/05 23:56:10 dlg Exp $ */
/* $NetBSD: bpf.c,v 1.33 1997/02/21 23:59:35 thorpej Exp $ */ /* $NetBSD: bpf.c,v 1.33 1997/02/21 23:59:35 thorpej Exp $ */
/* /*
@ -731,6 +731,8 @@ bpf_set_wtimeout(struct bpf_d *d, const struct timeval *tv)
return (EINVAL); return (EINVAL);
nsec = TIMEVAL_TO_NSEC(tv); nsec = TIMEVAL_TO_NSEC(tv);
if (nsec > SEC_TO_NSEC(300))
return (EINVAL);
if (nsec > MAXTSLP) if (nsec > MAXTSLP)
return (EOVERFLOW); return (EOVERFLOW);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: if_bridge.c,v 1.370 2024/04/14 20:46:27 bluhm Exp $ */ /* $OpenBSD: if_bridge.c,v 1.371 2024/08/05 17:47:29 bluhm Exp $ */
/* /*
* Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net) * Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net)
@ -70,7 +70,7 @@
#if NPF > 0 #if NPF > 0
#include <net/pfvar.h> #include <net/pfvar.h>
#define BRIDGE_IN PF_IN #define BRIDGE_IN PF_IN
#define BRIDGE_OUT PF_OUT #define BRIDGE_OUT PF_FWD
#else #else
#define BRIDGE_IN 0 #define BRIDGE_IN 0
#define BRIDGE_OUT 1 #define BRIDGE_OUT 1

View file

@ -1,4 +1,4 @@
/* $OpenBSD: if_veb.c,v 1.35 2024/02/13 12:22:09 bluhm Exp $ */ /* $OpenBSD: if_veb.c,v 1.36 2024/08/05 17:47:29 bluhm Exp $ */
/* /*
* Copyright (c) 2021 David Gwynne <dlg@openbsd.org> * Copyright (c) 2021 David Gwynne <dlg@openbsd.org>
@ -944,7 +944,7 @@ veb_broadcast(struct veb_softc *sc, struct veb_port *rp, struct mbuf *m0,
* let pf look at it, but use the veb interface as a proxy. * let pf look at it, but use the veb interface as a proxy.
*/ */
if (ISSET(ifp->if_flags, IFF_LINK1) && if (ISSET(ifp->if_flags, IFF_LINK1) &&
(m0 = veb_pf(ifp, PF_OUT, m0)) == NULL) (m0 = veb_pf(ifp, PF_FWD, m0)) == NULL)
return; return;
#endif #endif
@ -1039,7 +1039,7 @@ veb_transmit(struct veb_softc *sc, struct veb_port *rp, struct veb_port *tp,
#if NPF > 0 #if NPF > 0
if (ISSET(ifp->if_flags, IFF_LINK1) && if (ISSET(ifp->if_flags, IFF_LINK1) &&
(m = veb_pf(ifp0, PF_OUT, m)) == NULL) (m = veb_pf(ifp0, PF_FWD, m)) == NULL)
return (NULL); return (NULL);
#endif #endif

View file

@ -1,4 +1,4 @@
/* $OpenBSD: timeout.h,v 1.48 2023/10/12 15:32:38 cheloha Exp $ */ /* $OpenBSD: timeout.h,v 1.49 2024/08/05 23:51:11 dlg Exp $ */
/* /*
* Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org> * Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org>
* All rights reserved. * All rights reserved.
@ -110,7 +110,7 @@ int timeout_add_tv(struct timeout *, const struct timeval *);
int timeout_add_sec(struct timeout *, int); int timeout_add_sec(struct timeout *, int);
int timeout_add_msec(struct timeout *, int); int timeout_add_msec(struct timeout *, int);
int timeout_add_usec(struct timeout *, int); int timeout_add_usec(struct timeout *, int);
int timeout_add_nsec(struct timeout *, int); int timeout_add_nsec(struct timeout *, uint64_t);
int timeout_abs_ts(struct timeout *, const struct timespec *); int timeout_abs_ts(struct timeout *, const struct timespec *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: netcat.c,v 1.227 2024/08/02 21:08:47 jan Exp $ */ /* $OpenBSD: netcat.c,v 1.228 2024/08/05 07:16:30 tb Exp $ */
/* /*
* Copyright (c) 2001 Eric Jackson <ericj@monkey.org> * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
* Copyright (c) 2015 Bob Beck. All rights reserved. * Copyright (c) 2015 Bob Beck. All rights reserved.
@ -644,10 +644,6 @@ main(int argc, char *argv[])
close(connfd); close(connfd);
tls_free(tls_cctx); tls_free(tls_cctx);
} }
if (family == AF_UNIX && uflag) {
if (connect(s, NULL, 0) == -1)
err(1, "connect");
}
if (!kflag) if (!kflag)
break; break;