sync with OpenBSD -current

This commit is contained in:
purplerain 2023-11-24 03:38:59 +00:00
parent 10cf24ada0
commit dde71458ae
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
28 changed files with 813 additions and 112 deletions

View File

@ -1 +1 @@
# SecBSD 1.4-f3e820c: Wed Nov 22 20:09:10 UTC 2023 (Mictlantecuhtli) # SecBSD 1.4-8cd59e6: Fri Nov 24 03:25:50 UTC 2023 (Mictlantecuhtli)

View File

@ -1,4 +1,4 @@
/* $OpenBSD: brconfig.c,v 1.31 2022/07/08 07:04:54 jsg Exp $ */ /* $OpenBSD: brconfig.c,v 1.32 2023/11/23 03:38:34 dlg Exp $ */
/* /*
* Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net) * Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net)
@ -656,6 +656,42 @@ bridge_addaddr(const char *ifsname, const char *addr)
err(1, "%s: %s", ifname, addr); err(1, "%s: %s", ifname, addr);
} }
void
bridge_addendpoint(const char *endpoint, const char *addr)
{
struct ifbareq ifba;
struct ether_addr *ea;
struct addrinfo *res;
int ecode;
/* should we handle ports? */
ecode = getaddrinfo(endpoint, NULL, NULL, &res);
if (ecode != 0) {
errx(1, "%s endpoint %s: %s", ifname, endpoint,
gai_strerror(ecode));
}
if (res->ai_addrlen > sizeof(ifba.ifba_dstsa))
errx(1, "%s: addrlen > dstsa", __func__);
ea = ether_aton(addr);
if (ea == NULL) {
errx(1, "%s endpoint %s %s: invalid Ethernet address",
ifname, endpoint, addr);
}
memset(&ifba, 0, sizeof(ifba));
strlcpy(ifba.ifba_name, ifname, sizeof(ifba.ifba_name));
strlcpy(ifba.ifba_ifsname, ifname, sizeof(ifba.ifba_ifsname));
memcpy(&ifba.ifba_dst, ea, sizeof(struct ether_addr));
memcpy(&ifba.ifba_dstsa, res->ai_addr, res->ai_addrlen);
ifba.ifba_flags = IFBAF_STATIC;
freeaddrinfo(res);
if (ioctl(sock, SIOCBRDGSADDR, &ifba) == -1)
err(1, "%s endpoint %s %s", ifname, endpoint, addr);
}
void void
bridge_addrs(const char *delim, int d) bridge_addrs(const char *delim, int d)
{ {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ifconfig.c,v 1.468 2023/10/29 14:23:04 millert Exp $ */ /* $OpenBSD: ifconfig.c,v 1.470 2023/11/23 03:38:34 dlg Exp $ */
/* $NetBSD: ifconfig.c,v 1.40 1997/10/01 02:19:43 enami Exp $ */ /* $NetBSD: ifconfig.c,v 1.40 1997/10/01 02:19:43 enami Exp $ */
/* /*
@ -577,6 +577,7 @@ const struct cmd {
{ "flush", 0, 0, bridge_flush }, { "flush", 0, 0, bridge_flush },
{ "flushall", 0, 0, bridge_flushall }, { "flushall", 0, 0, bridge_flushall },
{ "static", NEXTARG2, 0, NULL, bridge_addaddr }, { "static", NEXTARG2, 0, NULL, bridge_addaddr },
{ "endpoint", NEXTARG2, 0, NULL, bridge_addendpoint },
{ "deladdr", NEXTARG, 0, bridge_deladdr }, { "deladdr", NEXTARG, 0, bridge_deladdr },
{ "maxaddr", NEXTARG, 0, bridge_maxaddr }, { "maxaddr", NEXTARG, 0, bridge_maxaddr },
{ "addr", 0, 0, bridge_addrs }, { "addr", 0, 0, bridge_addrs },
@ -3185,9 +3186,11 @@ static void
print_tunnel(const struct if_laddrreq *req) print_tunnel(const struct if_laddrreq *req)
{ {
char psrcaddr[NI_MAXHOST]; char psrcaddr[NI_MAXHOST];
char psrcport[NI_MAXSERV];
char pdstaddr[NI_MAXHOST]; char pdstaddr[NI_MAXHOST];
char pdstport[NI_MAXSERV];
const char *ver = ""; const char *ver = "";
const int niflag = NI_NUMERICHOST; const int niflag = NI_NUMERICHOST | NI_NUMERICSERV | NI_DGRAM;
if (req == NULL) { if (req == NULL) {
printf("(unset)"); printf("(unset)");
@ -3197,12 +3200,15 @@ print_tunnel(const struct if_laddrreq *req)
psrcaddr[0] = pdstaddr[0] = '\0'; psrcaddr[0] = pdstaddr[0] = '\0';
if (getnameinfo((struct sockaddr *)&req->addr, req->addr.ss_len, if (getnameinfo((struct sockaddr *)&req->addr, req->addr.ss_len,
psrcaddr, sizeof(psrcaddr), 0, 0, niflag) != 0) psrcaddr, sizeof(psrcaddr), psrcport, sizeof(psrcport),
niflag) != 0)
strlcpy(psrcaddr, "<error>", sizeof(psrcaddr)); strlcpy(psrcaddr, "<error>", sizeof(psrcaddr));
if (req->addr.ss_family == AF_INET6) if (req->addr.ss_family == AF_INET6)
ver = "6"; ver = "6";
printf("inet%s %s", ver, psrcaddr); printf("inet%s %s", ver, psrcaddr);
if (strcmp(psrcport, "0") != 0)
printf(":%s", psrcport);
if (req->dstaddr.ss_family != AF_UNSPEC) { if (req->dstaddr.ss_family != AF_UNSPEC) {
in_port_t dstport = 0; in_port_t dstport = 0;
@ -3211,24 +3217,12 @@ print_tunnel(const struct if_laddrreq *req)
if (getnameinfo((struct sockaddr *)&req->dstaddr, if (getnameinfo((struct sockaddr *)&req->dstaddr,
req->dstaddr.ss_len, pdstaddr, sizeof(pdstaddr), req->dstaddr.ss_len, pdstaddr, sizeof(pdstaddr),
0, 0, niflag) != 0) pdstport, sizeof(pdstport), niflag) != 0)
strlcpy(pdstaddr, "<error>", sizeof(pdstaddr)); strlcpy(pdstaddr, "<error>", sizeof(pdstaddr));
printf(" --> %s", pdstaddr); printf(" --> %s", pdstaddr);
if (strcmp(pdstport, "0") != 0)
switch (req->dstaddr.ss_family) { printf(":%s", pdstport);
case AF_INET:
sin = (const struct sockaddr_in *)&req->dstaddr;
dstport = sin->sin_port;
break;
case AF_INET6:
sin6 = (const struct sockaddr_in6 *)&req->dstaddr;
dstport = sin6->sin6_port;
break;
}
if (dstport)
printf(":%u", ntohs(dstport));
} }
} }
@ -3715,29 +3709,58 @@ in6_status(int force)
void void
settunnel(const char *src, const char *dst) settunnel(const char *src, const char *dst)
{ {
char buf[HOST_NAME_MAX+1 + sizeof (":65535")], *dstport; char srcbuf[HOST_NAME_MAX], dstbuf[HOST_NAME_MAX];
const char *dstip; const char *srcport, *dstport;
const char *srcaddr, *dstaddr;
struct addrinfo *srcres, *dstres; struct addrinfo *srcres, *dstres;
struct addrinfo hints = {
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_DGRAM,
.ai_protocol = IPPROTO_UDP,
.ai_flags = AI_PASSIVE,
};
int ecode; int ecode;
size_t len;
struct if_laddrreq req; struct if_laddrreq req;
if (strchr(dst, ':') == NULL || strchr(dst, ':') != strrchr(dst, ':')) { srcport = strchr(src, ':');
if (srcport == NULL || srcport != strrchr(src, ':')) {
/* no port or IPv6 */ /* no port or IPv6 */
dstip = dst; srcaddr = src;
dstport = NULL; srcport = NULL;
} else { } else {
if (strlcpy(buf, dst, sizeof(buf)) >= sizeof(buf)) len = srcport - src;
errx(1, "%s bad value", dst); if (len >= sizeof(srcbuf))
dstport = strchr(buf, ':'); errx(1, "src %s bad value", src);
*dstport++ = '\0'; memcpy(srcbuf, src, len);
dstip = buf; srcbuf[len] = '\0';
srcaddr = srcbuf;
srcport++;
} }
if ((ecode = getaddrinfo(src, NULL, NULL, &srcres)) != 0) dstport = strchr(dst, ':');
if (dstport == NULL || dstport != strrchr(dst, ':')) {
/* no port or IPv6 */
dstaddr = dst;
dstport = NULL;
} else {
len = dstport - dst;
if (len >= sizeof(dstbuf))
errx(1, "dst %s bad value", dst);
memcpy(dstbuf, dst, len);
dstbuf[len] = '\0';
dstaddr = dstbuf;
dstport++;
}
if ((ecode = getaddrinfo(srcaddr, srcport, &hints, &srcres)) != 0)
errx(1, "error in parsing address string: %s", errx(1, "error in parsing address string: %s",
gai_strerror(ecode)); gai_strerror(ecode));
if ((ecode = getaddrinfo(dstip, dstport, NULL, &dstres)) != 0) hints.ai_flags = 0;
if ((ecode = getaddrinfo(dstaddr, dstport, &hints, &dstres)) != 0)
errx(1, "error in parsing address string: %s", errx(1, "error in parsing address string: %s",
gai_strerror(ecode)); gai_strerror(ecode));
@ -3757,37 +3780,56 @@ settunnel(const char *src, const char *dst)
} }
void void
settunneladdr(const char *addr, int ignored) settunneladdr(const char *src, int ignored)
{ {
struct addrinfo hints, *res; char srcbuf[HOST_NAME_MAX];
const char *srcport;
const char *srcaddr;
struct addrinfo *srcres;
struct addrinfo hints = {
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_DGRAM,
.ai_protocol = IPPROTO_UDP,
.ai_flags = AI_PASSIVE,
};
struct if_laddrreq req; struct if_laddrreq req;
ssize_t len; ssize_t len;
int rv; int rv;
memset(&hints, 0, sizeof(hints)); srcport = strchr(src, ':');
hints.ai_family = AF_UNSPEC; if (srcport == NULL || srcport != strrchr(src, ':')) {
hints.ai_socktype = SOCK_DGRAM; /* no port or IPv6 */
hints.ai_protocol = 0; srcaddr = src;
hints.ai_flags = AI_PASSIVE; srcport = NULL;
} else {
len = srcport - src;
if (len >= sizeof(srcbuf))
errx(1, "src %s bad value", src);
memcpy(srcbuf, src, len);
srcbuf[len] = '\0';
rv = getaddrinfo(addr, NULL, &hints, &res); srcaddr = srcbuf;
srcport++;
}
rv = getaddrinfo(srcaddr, srcport, &hints, &srcres);
if (rv != 0) if (rv != 0)
errx(1, "tunneladdr %s: %s", addr, gai_strerror(rv)); errx(1, "tunneladdr %s: %s", src, gai_strerror(rv));
memset(&req, 0, sizeof(req)); memset(&req, 0, sizeof(req));
len = strlcpy(req.iflr_name, ifname, sizeof(req.iflr_name)); len = strlcpy(req.iflr_name, ifname, sizeof(req.iflr_name));
if (len >= sizeof(req.iflr_name)) if (len >= sizeof(req.iflr_name))
errx(1, "%s: Interface name too long", ifname); errx(1, "%s: Interface name too long", ifname);
memcpy(&req.addr, res->ai_addr, res->ai_addrlen); memcpy(&req.addr, srcres->ai_addr, srcres->ai_addrlen);
req.dstaddr.ss_len = 2; req.dstaddr.ss_len = 2;
req.dstaddr.ss_family = AF_UNSPEC; req.dstaddr.ss_family = AF_UNSPEC;
if (ioctl(sock, SIOCSLIFPHYADDR, &req) == -1) if (ioctl(sock, SIOCSLIFPHYADDR, &req) == -1)
warn("tunneladdr %s", addr); warn("tunneladdr %s", src);
freeaddrinfo(res); freeaddrinfo(srcres);
} }
void void

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ifconfig.h,v 1.4 2021/11/11 09:39:16 claudio Exp $ */ /* $OpenBSD: ifconfig.h,v 1.5 2023/11/23 03:38:34 dlg Exp $ */
/* /*
* Copyright (c) 2009 Claudio Jeker <claudio@openbsd.org> * Copyright (c) 2009 Claudio Jeker <claudio@openbsd.org>
@ -48,6 +48,7 @@ void bridge_delspan(const char *, int);
void bridge_flush(const char *, int); void bridge_flush(const char *, int);
void bridge_flushall(const char *, int); void bridge_flushall(const char *, int);
void bridge_addaddr(const char *, const char *); void bridge_addaddr(const char *, const char *);
void bridge_addendpoint(const char *, const char *);
void bridge_deladdr(const char *, int); void bridge_deladdr(const char *, int);
void bridge_maxaddr(const char *, int); void bridge_maxaddr(const char *, int);
void bridge_addrs(const char *, int); void bridge_addrs(const char *, int);

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: vxlan.4,v 1.19 2022/09/13 01:38:31 jsg Exp $ .\" $OpenBSD: vxlan.4,v 1.20 2023/11/23 03:36:42 dlg Exp $
.\" .\"
.\" Copyright (c) 2013 Reyk Floeter <reyk@openbsd.org> .\" Copyright (c) 2013 Reyk Floeter <reyk@openbsd.org>
.\" .\"
@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: September 13 2022 $ .Dd $Mdocdate: November 23 2023 $
.Dt VXLAN 4 .Dt VXLAN 4
.Os .Os
.Sh NAME .Sh NAME
@ -173,10 +173,10 @@ The following examples creates a learning overlay network:
.Pp .Pp
Prior to the assignment of UDP port 4789 by IANA, some early VXLAN Prior to the assignment of UDP port 4789 by IANA, some early VXLAN
implementations used port 8472. implementations used port 8472.
A non-standard port can be specified with the tunnel destination A non-standard port can be specified with the tunnel source
address: address:
.Bd -literal -offset indent .Bd -literal -offset indent
# ifconfig vxlan0 tunnel 192.168.1.100 239.1.1.100:8472 # ifconfig vxlan0 tunnel 192.168.1.100:8472 239.1.1.100
.Ed .Ed
.Sh SECURITY .Sh SECURITY
.Nm .Nm

View File

@ -1,4 +1,4 @@
/* $OpenBSD: cpu.c,v 1.99 2023/10/24 13:20:09 claudio Exp $ */ /* $OpenBSD: cpu.c,v 1.101 2023/11/23 19:54:30 patrick Exp $ */
/* /*
* Copyright (c) 2016 Dale Rahn <drahn@dalerahn.com> * Copyright (c) 2016 Dale Rahn <drahn@dalerahn.com>
@ -17,6 +17,8 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
#include "kstat.h"
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
#include <sys/proc.h> #include <sys/proc.h>
@ -25,6 +27,7 @@
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <sys/task.h> #include <sys/task.h>
#include <sys/user.h> #include <sys/user.h>
#include <sys/kstat.h>
#include <uvm/uvm.h> #include <uvm/uvm.h>
@ -250,6 +253,11 @@ void cpu_psci_init(struct cpu_info *);
void cpu_flush_bp_noop(void); void cpu_flush_bp_noop(void);
void cpu_flush_bp_psci(void); void cpu_flush_bp_psci(void);
#if NKSTAT > 0
void cpu_kstat_attach(struct cpu_info *ci);
void cpu_opp_kstat_attach(struct cpu_info *ci);
#endif
void void
cpu_identify(struct cpu_info *ci) cpu_identify(struct cpu_info *ci)
{ {
@ -937,6 +945,10 @@ cpu_attach(struct device *parent, struct device *dev, void *aux)
} }
cpu_init(); cpu_init();
#if NKSTAT > 0
cpu_kstat_attach(ci);
#endif
#ifdef MULTIPROCESSOR #ifdef MULTIPROCESSOR
} }
#endif #endif
@ -1181,6 +1193,10 @@ cpu_init_secondary(struct cpu_info *ci)
spllower(IPL_NONE); spllower(IPL_NONE);
#if NKSTAT > 0
cpu_kstat_attach(ci);
#endif
sched_toidle(); sched_toidle();
} }
@ -1534,6 +1550,10 @@ cpu_opp_mountroot(struct device *self)
if (ot == NULL) if (ot == NULL)
continue; continue;
#if NKSTAT > 0
cpu_opp_kstat_attach(ci);
#endif
/* Skip if this table is shared and we're not the master. */ /* Skip if this table is shared and we're not the master. */
if (ot->ot_master && ot->ot_master != ci) if (ot->ot_master && ot->ot_master != ci)
continue; continue;
@ -1817,3 +1837,157 @@ cpu_psci_init(struct cpu_info *ci)
ci->ci_psci_suspend_param = ci->ci_psci_suspend_param =
OF_getpropint(node, "arm,psci-suspend-param", 0); OF_getpropint(node, "arm,psci-suspend-param", 0);
} }
#if NKSTAT > 0
struct cpu_kstats {
struct kstat_kv ck_impl;
struct kstat_kv ck_part;
struct kstat_kv ck_rev;
};
void
cpu_kstat_attach(struct cpu_info *ci)
{
struct kstat *ks;
struct cpu_kstats *ck;
uint64_t midr, impl, part;
const char *impl_name = NULL, *part_name = NULL;
const struct cpu_cores *coreselecter = cpu_cores_none;
size_t i;
ks = kstat_create(ci->ci_dev->dv_xname, 0, "mach", 0, KSTAT_T_KV, 0);
if (ks == NULL) {
printf("%s: unable to create cpu kstats\n",
ci->ci_dev->dv_xname);
/* printf? */
return;
}
ck = malloc(sizeof(*ck), M_DEVBUF, M_WAITOK);
midr = READ_SPECIALREG(midr_el1);
impl = CPU_IMPL(midr);
part = CPU_PART(midr);
for (i = 0; cpu_implementers[i].name; i++) {
if (impl == cpu_implementers[i].id) {
impl_name = cpu_implementers[i].name;
coreselecter = cpu_implementers[i].corelist;
break;
}
}
if (impl_name) {
kstat_kv_init(&ck->ck_impl, "impl", KSTAT_KV_T_ISTR);
strlcpy(kstat_kv_istr(&ck->ck_impl), impl_name,
sizeof(kstat_kv_istr(&ck->ck_impl)));
} else
kstat_kv_init(&ck->ck_impl, "impl", KSTAT_KV_T_NULL);
for (i = 0; coreselecter[i].name; i++) {
if (part == coreselecter[i].id) {
part_name = coreselecter[i].name;
break;
}
}
if (part_name) {
kstat_kv_init(&ck->ck_part, "part", KSTAT_KV_T_ISTR);
strlcpy(kstat_kv_istr(&ck->ck_part), part_name,
sizeof(kstat_kv_istr(&ck->ck_part)));
} else
kstat_kv_init(&ck->ck_part, "part", KSTAT_KV_T_NULL);
kstat_kv_init(&ck->ck_rev, "rev", KSTAT_KV_T_ISTR);
snprintf(kstat_kv_istr(&ck->ck_rev), sizeof(kstat_kv_istr(&ck->ck_rev)),
"r%llup%llu", CPU_VAR(midr), CPU_REV(midr));
ks->ks_softc = ci;
ks->ks_data = ck;
ks->ks_datalen = sizeof(*ck);
ks->ks_read = kstat_read_nop;
kstat_install(ks);
/* XXX should we have a ci->ci_kstat = ks? */
}
struct cpu_opp_kstats {
struct kstat_kv coppk_freq;
struct kstat_kv coppk_supply_v;
};
int
cpu_opp_kstat_read(struct kstat *ks)
{
struct cpu_info *ci = ks->ks_softc;
struct cpu_opp_kstats *coppk = ks->ks_data;
struct opp_table *ot = ci->ci_opp_table;
struct cpu_info *oci;
struct timespec now, diff;
/* rate limit */
getnanouptime(&now);
timespecsub(&now, &ks->ks_updated, &diff);
if (diff.tv_sec < 1)
return (0);
if (ot == NULL)
return (0);
oci = ot->ot_master;
if (oci == NULL)
oci = ci;
kstat_kv_freq(&coppk->coppk_freq) =
clock_get_frequency(oci->ci_node, NULL);
if (oci->ci_cpu_supply) {
kstat_kv_volts(&coppk->coppk_supply_v) =
regulator_get_voltage(oci->ci_cpu_supply);
}
ks->ks_updated = now;
return (0);
}
void
cpu_opp_kstat_attach(struct cpu_info *ci)
{
struct kstat *ks;
struct cpu_opp_kstats *coppk;
struct opp_table *ot = ci->ci_opp_table;
struct cpu_info *oci = ot->ot_master;
if (oci == NULL)
oci = ci;
ks = kstat_create(ci->ci_dev->dv_xname, 0, "dt-opp", 0,
KSTAT_T_KV, 0);
if (ks == NULL) {
printf("%s: unable to create cpu dt-opp kstats\n",
ci->ci_dev->dv_xname);
return;
}
coppk = malloc(sizeof(*coppk), M_DEVBUF, M_WAITOK);
kstat_kv_init(&coppk->coppk_freq, "freq", KSTAT_KV_T_FREQ);
kstat_kv_init(&coppk->coppk_supply_v, "supply",
oci->ci_cpu_supply ? KSTAT_KV_T_VOLTS_DC : KSTAT_KV_T_NULL);
ks->ks_softc = oci;
ks->ks_data = coppk;
ks->ks_datalen = sizeof(*coppk);
ks->ks_read = cpu_opp_kstat_read;
kstat_install(ks);
/* XXX should we have a ci->ci_opp_kstat = ks? */
}
#endif /* NKSTAT > 0 */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ofw_thermal.c,v 1.7 2020/12/31 11:11:22 kettenis Exp $ */ /* $OpenBSD: ofw_thermal.c,v 1.8 2023/11/23 00:47:13 dlg Exp $ */
/* /*
* Copyright (c) 2019 Mark Kettenis * Copyright (c) 2019 Mark Kettenis
* *
@ -15,12 +15,16 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
#include "kstat.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/systm.h> #include <sys/systm.h>
#include <sys/malloc.h> #include <sys/malloc.h>
#include <sys/stdint.h> #include <sys/stdint.h>
#include <sys/task.h> #include <sys/task.h>
#include <sys/timeout.h> #include <sys/timeout.h>
#include <sys/sched.h>
#include <sys/kstat.h>
#include <machine/bus.h> #include <machine/bus.h>
@ -36,6 +40,7 @@ LIST_HEAD(, cooling_device) cooling_devices =
struct taskq *tztq; struct taskq *tztq;
struct trippoint { struct trippoint {
int tp_node;
int32_t tp_temperature; int32_t tp_temperature;
uint32_t tp_hysteresis; uint32_t tp_hysteresis;
int tp_type; int tp_type;
@ -48,6 +53,14 @@ struct trippoint {
#define THERMAL_HOT 3 #define THERMAL_HOT 3
#define THERMAL_CRITICAL 4 #define THERMAL_CRITICAL 4
static const char *trip_types[] = {
[THERMAL_NONE] = "none",
[THERMAL_ACTIVE] = "active",
[THERMAL_PASSIVE] = "passive",
[THERMAL_HOT] = "hot",
[THERMAL_CRITICAL] = "critical",
};
struct cmap { struct cmap {
uint32_t *cm_cdev; uint32_t *cm_cdev;
uint32_t *cm_cdevend; uint32_t *cm_cdevend;
@ -82,8 +95,16 @@ struct thermal_zone {
LIST_HEAD(, cdev) tz_cdevs; LIST_HEAD(, cdev) tz_cdevs;
int32_t tz_temperature; int32_t tz_temperature;
struct rwlock tz_lock;
struct kstat *tz_kstat;
}; };
#if NKSTAT > 0
static void thermal_zone_kstat_attach(struct thermal_zone *);
static void thermal_zone_kstat_update(struct thermal_zone *);
#endif /* NKSTAT > 0 */
LIST_HEAD(, thermal_zone) thermal_zones = LIST_HEAD(, thermal_zone) thermal_zones =
LIST_HEAD_INITIALIZER(thermal_zones); LIST_HEAD_INITIALIZER(thermal_zones);
@ -324,6 +345,9 @@ thermal_zone_poll(void *arg)
out: out:
tz->tz_temperature = temp; tz->tz_temperature = temp;
#if NKSTAT > 0
thermal_zone_kstat_update(tz);
#endif
if (tz->tz_tp && tz->tz_tp->tp_type == THERMAL_PASSIVE) if (tz->tz_tp && tz->tz_tp->tp_type == THERMAL_PASSIVE)
polling_delay = tz->tz_polling_delay_passive; polling_delay = tz->tz_polling_delay_passive;
else else
@ -331,6 +355,23 @@ out:
timeout_add_msec(&tz->tz_poll_to, polling_delay); timeout_add_msec(&tz->tz_poll_to, polling_delay);
} }
static int
thermal_zone_triptype(const char *prop)
{
size_t i;
for (i = 0; i < nitems(trip_types); i++) {
const char *name = trip_types[i];
if (name == NULL)
continue;
if (strcmp(name, prop) == 0)
return (i);
}
return (THERMAL_NONE);
}
void void
thermal_zone_init(int node) thermal_zone_init(int node)
{ {
@ -351,6 +392,7 @@ thermal_zone_init(int node)
tz = malloc(sizeof(struct thermal_zone), M_DEVBUF, M_ZERO | M_WAITOK); tz = malloc(sizeof(struct thermal_zone), M_DEVBUF, M_ZERO | M_WAITOK);
tz->tz_node = node; tz->tz_node = node;
rw_init(&tz->tz_lock, "tzlk");
OF_getprop(node, "name", &tz->tz_name, sizeof(tz->tz_name)); OF_getprop(node, "name", &tz->tz_name, sizeof(tz->tz_name));
tz->tz_name[sizeof(tz->tz_name) - 1] = 0; tz->tz_name[sizeof(tz->tz_name) - 1] = 0;
@ -394,17 +436,11 @@ thermal_zone_init(int node)
break; break;
} }
tp = &tz->tz_trips[i]; tp = &tz->tz_trips[i];
tp->tp_node = node;
tp->tp_temperature = temp; tp->tp_temperature = temp;
tp->tp_hysteresis = OF_getpropint(node, "hysteresis", 0); tp->tp_hysteresis = OF_getpropint(node, "hysteresis", 0);
OF_getprop(node, "type", type, sizeof(type)); OF_getprop(node, "type", type, sizeof(type));
if (strcmp(type, "active") == 0) tp->tp_type = thermal_zone_triptype(type);
tp->tp_type = THERMAL_ACTIVE;
else if (strcmp(type, "passive") == 0)
tp->tp_type = THERMAL_PASSIVE;
else if (strcmp(type, "hot") == 0)
tp->tp_type = THERMAL_HOT;
else if (strcmp(type, "critical") == 0)
tp->tp_type = THERMAL_CRITICAL;
tp->tp_phandle = OF_getpropint(node, "phandle", 0); tp->tp_phandle = OF_getpropint(node, "phandle", 0);
tp++; tp++;
} }
@ -465,6 +501,10 @@ thermal_zone_init(int node)
if (tz->tz_polling_delay > 0) if (tz->tz_polling_delay > 0)
timeout_add_msec(&tz->tz_poll_to, tz->tz_polling_delay); timeout_add_msec(&tz->tz_poll_to, tz->tz_polling_delay);
LIST_INSERT_HEAD(&thermal_zones, tz, tz_list); LIST_INSERT_HEAD(&thermal_zones, tz, tz_list);
#if NKSTAT > 0
thermal_zone_kstat_attach(tz);
#endif
} }
void void
@ -480,3 +520,109 @@ thermal_init(void)
for (node = OF_child(node); node != 0; node = OF_peer(node)) for (node = OF_child(node); node != 0; node = OF_peer(node))
thermal_zone_init(node); thermal_zone_init(node);
} }
#if NKSTAT > 0
static const char *
thermal_zone_tripname(int type)
{
if (type >= nitems(trip_types))
return (NULL);
return (trip_types[type]);
}
struct thermal_zone_kstats {
struct kstat_kv tzk_name; /* istr could be short */
struct kstat_kv tzk_temp;
struct kstat_kv tzk_tp;
struct kstat_kv tzk_tp_type;
struct kstat_kv tzk_cooling;
};
static void
thermal_zone_kstat_update(struct thermal_zone *tz)
{
struct kstat *ks = tz->tz_kstat;
struct thermal_zone_kstats *tzk;
if (ks == NULL)
return;
tzk = ks->ks_data;
rw_enter_write(&tz->tz_lock);
if (tz->tz_temperature == THERMAL_SENSOR_MAX)
tzk->tzk_temp.kv_type = KSTAT_KV_T_NULL;
else {
tzk->tzk_temp.kv_type = KSTAT_KV_T_TEMP;
kstat_kv_temp(&tzk->tzk_temp) = 273150000 +
1000 * tz->tz_temperature;
}
if (tz->tz_tp == NULL) {
kstat_kv_u32(&tzk->tzk_tp) = 0;
strlcpy(kstat_kv_istr(&tzk->tzk_tp_type), "none",
sizeof(kstat_kv_istr(&tzk->tzk_tp_type)));
} else {
int triptype = tz->tz_tp->tp_type;
const char *tripname = thermal_zone_tripname(triptype);
kstat_kv_u32(&tzk->tzk_tp) = tz->tz_tp->tp_node;
if (tripname == NULL) {
snprintf(kstat_kv_istr(&tzk->tzk_tp_type),
sizeof(kstat_kv_istr(&tzk->tzk_tp_type)),
"%u", triptype);
} else {
strlcpy(kstat_kv_istr(&tzk->tzk_tp_type), tripname,
sizeof(kstat_kv_istr(&tzk->tzk_tp_type)));
}
}
kstat_kv_bool(&tzk->tzk_cooling) = (tz->tz_cm != NULL);
getnanouptime(&ks->ks_updated);
rw_exit_write(&tz->tz_lock);
}
static void
thermal_zone_kstat_attach(struct thermal_zone *tz)
{
struct kstat *ks;
struct thermal_zone_kstats *tzk;
static unsigned int unit = 0;
ks = kstat_create("dt", 0, "thermal-zone", unit++, KSTAT_T_KV, 0);
if (ks == NULL) {
printf("unable to create thermal-zone kstats for %s",
tz->tz_name);
return;
}
tzk = malloc(sizeof(*tzk), M_DEVBUF, M_WAITOK|M_ZERO);
kstat_kv_init(&tzk->tzk_name, "name", KSTAT_KV_T_ISTR);
strlcpy(kstat_kv_istr(&tzk->tzk_name), tz->tz_name,
sizeof(kstat_kv_istr(&tzk->tzk_name)));
kstat_kv_init(&tzk->tzk_temp, "temperature", KSTAT_KV_T_NULL);
/* XXX dt node is not be the most useful info here. */
kstat_kv_init(&tzk->tzk_tp, "trip-point-node", KSTAT_KV_T_UINT32);
kstat_kv_init(&tzk->tzk_tp_type, "trip-type", KSTAT_KV_T_ISTR);
strlcpy(kstat_kv_istr(&tzk->tzk_tp_type), "unknown",
sizeof(kstat_kv_istr(&tzk->tzk_tp_type)));
kstat_kv_init(&tzk->tzk_cooling, "active-cooling", KSTAT_KV_T_BOOL);
kstat_kv_bool(&tzk->tzk_cooling) = 0;
ks->ks_softc = tz;
ks->ks_data = tzk;
ks->ks_datalen = sizeof(*tzk);
ks->ks_read = kstat_read_nop;
kstat_set_rlock(ks, &tz->tz_lock);
tz->tz_kstat = ks;
kstat_install(ks);
}
#endif /* NKSTAT > 0 */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: azalia.c,v 1.284 2023/07/30 08:46:03 yasuoka Exp $ */ /* $OpenBSD: azalia.c,v 1.285 2023/11/23 14:24:06 jsg Exp $ */
/* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */ /* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */
/*- /*-
@ -475,6 +475,7 @@ azalia_configure_pci(azalia_t *az)
case PCI_PRODUCT_INTEL_GLK_HDA: case PCI_PRODUCT_INTEL_GLK_HDA:
case PCI_PRODUCT_INTEL_JSL_HDA: case PCI_PRODUCT_INTEL_JSL_HDA:
case PCI_PRODUCT_INTEL_EHL_HDA: case PCI_PRODUCT_INTEL_EHL_HDA:
case PCI_PRODUCT_INTEL_ADL_N_HDA:
reg = azalia_pci_read(az->pc, az->tag, reg = azalia_pci_read(az->pc, az->tag,
INTEL_PCIE_NOSNOOP_REG); INTEL_PCIE_NOSNOOP_REG);
reg &= INTEL_PCIE_NOSNOOP_MASK; reg &= INTEL_PCIE_NOSNOOP_MASK;
@ -498,6 +499,7 @@ const struct pci_matchid azalia_pci_devices[] = {
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_GLK_HDA }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_GLK_HDA },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_JSL_HDA }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_JSL_HDA },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_HDA }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_HDA },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HDA },
}; };
int int

View File

@ -142,7 +142,8 @@ static const struct pci_matchid amdgpu_devices[] = {
{0x1002, 0x73BF }, {0x1002, 0x73BF },
/* Van Gogh */ /* Van Gogh */
{0x1002, 0x163F }, {0x1002, 0x1435 }, /* Custom GPU 0932 */
{0x1002, 0x163F }, /* Custom GPU 0405 */
/* Yellow Carp */ /* Yellow Carp */
{0x1002, 0x164D }, {0x1002, 0x164D },

View File

@ -1963,6 +1963,7 @@ static const struct pci_device_id pciidlist[] = {
{0x1002, 0x73BF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SIENNA_CICHLID}, {0x1002, 0x73BF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SIENNA_CICHLID},
/* Van Gogh */ /* Van Gogh */
{0x1002, 0x1435, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VANGOGH|AMD_IS_APU},
{0x1002, 0x163F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VANGOGH|AMD_IS_APU}, {0x1002, 0x163F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VANGOGH|AMD_IS_APU},
/* Yellow Carp */ /* Yellow Carp */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dwiic_pci.c,v 1.23 2023/02/05 02:26:02 jsg Exp $ */ /* $OpenBSD: dwiic_pci.c,v 1.24 2023/11/23 14:24:06 jsg Exp $ */
/* /*
* Synopsys DesignWare I2C controller * Synopsys DesignWare I2C controller
* PCI attachment * PCI attachment
@ -166,6 +166,12 @@ const struct pci_matchid dwiic_pci_ids[] = {
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_5 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_5 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_6 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_6 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_7 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SIO_I2C_7 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_0 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_2 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_3 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_4 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_5 },
}; };
int int

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ichiic.c,v 1.51 2023/02/05 02:26:02 jsg Exp $ */ /* $OpenBSD: ichiic.c,v 1.52 2023/11/23 14:24:06 jsg Exp $ */
/* /*
* Copyright (c) 2005, 2006 Alexander Yurchenko <grange@openbsd.org> * Copyright (c) 2005, 2006 Alexander Yurchenko <grange@openbsd.org>
@ -139,6 +139,7 @@ const struct pci_matchid ichiic_ids[] = {
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_700SERIES_SMB }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_700SERIES_SMB },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_JSL_SMB }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_JSL_SMB },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SMB }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EHL_SMB },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_SMB },
}; };
int int

View File

@ -1,4 +1,4 @@
$OpenBSD: pcidevs,v 1.2053 2023/11/14 02:25:48 jsg Exp $ $OpenBSD: pcidevs,v 1.2055 2023/11/23 14:21:47 jsg Exp $
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */ /* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
/* /*
@ -1277,6 +1277,7 @@ product ATI KAVERI_20 0x131b Kaveri Radeon R4
product ATI KAVERI_21 0x131c Kaveri Radeon R7 product ATI KAVERI_21 0x131c Kaveri Radeon R7
product ATI KAVERI_22 0x131d Kaveri Radeon R6 product ATI KAVERI_22 0x131d Kaveri Radeon R6
product ATI CYAN_SKILLFISH_1 0x13fe Cyan Skillfish product ATI CYAN_SKILLFISH_1 0x13fe Cyan Skillfish
product ATI VANGOGH_0932 0x1435 Van Gogh
product ATI CYAN_SKILLFISH_2 0x143f Cyan Skillfish product ATI CYAN_SKILLFISH_2 0x143f Cyan Skillfish
product ATI PPB_1 0x1478 PCIE product ATI PPB_1 0x1478 PCIE
product ATI PPB_2 0x1479 PCIE product ATI PPB_2 0x1479 PCIE
@ -1290,7 +1291,7 @@ product ATI BARCELO 0x15e7 Barcelo
product ATI RENOIR 0x1636 Renoir product ATI RENOIR 0x1636 Renoir
product ATI RENOIR_HDA 0x1637 Renoir HD Audio product ATI RENOIR_HDA 0x1637 Renoir HD Audio
product ATI CEZANNE 0x1638 Cezanne product ATI CEZANNE 0x1638 Cezanne
product ATI VANGOGH 0x163f Van Gogh product ATI VANGOGH_0405 0x163f Van Gogh
product ATI VANGOGH_HDA 0x1640 Van Gogh HD Audio product ATI VANGOGH_HDA 0x1640 Van Gogh HD Audio
product ATI LUCIENNE 0x164c Lucienne product ATI LUCIENNE 0x164c Lucienne
product ATI YELLOW_CARP_1 0x164d Rembrandt product ATI YELLOW_CARP_1 0x164d Rembrandt
@ -5601,8 +5602,11 @@ product INTEL ADL_U9_HB_2 0x460a Core 12G Host
product INTEL ADL_S_PCIE_1 0x460d Core 12G PCIE product INTEL ADL_S_PCIE_1 0x460d Core 12G PCIE
product INTEL ADL_XDCI 0x460e Core 12G xDCI product INTEL ADL_XDCI 0x460e Core 12G xDCI
product INTEL ADL_S_HB_6 0x4610 Core 12G Host product INTEL ADL_S_HB_6 0x4610 Core 12G Host
product INTEL ADL_N_HB_1 0x4617 ADL-N Host
product INTEL ADL_U15_HB_2 0x4619 Core 12G Host product INTEL ADL_U15_HB_2 0x4619 Core 12G Host
product INTEL ADL_U9_HB_3 0x461a Core 12G Host product INTEL ADL_U9_HB_3 0x461a Core 12G Host
product INTEL ADL_N_HB_2 0x461b N200 Host
product INTEL ADL_N_HB_3 0x461c N100 Host
product INTEL ADL_S_DTT 0x461d Core 12G DTT product INTEL ADL_S_DTT 0x461d Core 12G DTT
product INTEL ADL_XHCI 0x461e Core 12G xHCI product INTEL ADL_XHCI 0x461e Core 12G xHCI
product INTEL ADL_TBT_PCIE3 0x461f Core 12G PCIE product INTEL ADL_TBT_PCIE3 0x461f Core 12G PCIE
@ -5895,7 +5899,49 @@ product INTEL 600SERIES_LP_ISH 0x51fc 600 Series ISH
product INTEL 600SERIES_LP_UFS 0x51ff 600 Series UFS product INTEL 600SERIES_LP_UFS 0x51ff 600 Series UFS
product INTEL 80960RD 0x5200 i960 RD product INTEL 80960RD 0x5200 i960 RD
product INTEL PRO_100_SERVER 0x5201 PRO 100 Server product INTEL PRO_100_SERVER 0x5201 PRO 100 Server
product INTEL ADL_N_ESPI 0x5481 ADL-N eSPI
product INTEL ADL_N_P2SB 0x54a0 ADL-N P2SB
product INTEL ADL_N_PMC 0x54a1 ADL-N PMC
product INTEL ADL_N_SMB 0x54a3 ADL-N SMBus
product INTEL ADL_N_SPI 0x54a4 ADL-N SPI
product INTEL ADL_N_TH 0x54a6 ADL-N TH
product INTEL ADL_N_UART_0 0x54a8 ADL-N UART
product INTEL ADL_N_UART_1 0x54a9 ADL-N UART
product INTEL ADL_N_GSPI_0 0x54aa ADL-N GSPI
product INTEL ADL_N_GSPI_1 0x54ab ADL-N GSPI
product INTEL ADL_N_PCIE_9 0x54b0 ADL-N PCIE
product INTEL ADL_N_PCIE_10 0x54b1 ADL-N PCIE
product INTEL ADL_N_PCIE_11 0x54b2 ADL-N PCIE
product INTEL ADL_N_PCIE_12 0x54b3 ADL-N PCIE
product INTEL ADL_N_PCIE_1 0x54b8 ADL-N PCIE
product INTEL ADL_N_PCIE_2 0x54b9 ADL-N PCIE
product INTEL ADL_N_PCIE_3 0x54ba ADL-N PCIE
product INTEL ADL_N_PCIE_4 0x54bb ADL-N PCIE
product INTEL ADL_N_PCIE_7 0x54be ADL-N PCIE
product INTEL ADL_N_EMMC 0x54c4 ADL-N eMMC
product INTEL ADL_N_I2C_4 0x54c5 ADL-N I2C
product INTEL ADL_N_I2C_5 0x54c6 ADL-N I2C
product INTEL ADL_N_UART_2 0x54c7 ADL-N UART
product INTEL ADL_N_HDA 0x54c8 ADL-N HD Audio
product INTEL ADL_N_THC_0 0x54d0 ADL-N THC
product INTEL ADL_N_THC_1 0x54d1 ADL-N THC
product INTEL ADL_N_AHCI 0x54d3 ADL-N AHCI
product INTEL ADL_N_UART_3 0x54da ADL-N UART
product INTEL ADL_N_HECI_1 0x54e0 ADL-N HECI
product INTEL ADL_N_HECI_2 0x54e1 ADL-N HECI
product INTEL ADL_N_HECI_3 0x54e4 ADL-N HECI
product INTEL ADL_N_HECI_4 0x54e5 ADL-N HECI
product INTEL ADL_N_I2C_0 0x54e8 ADL-N I2C
product INTEL ADL_N_I2C_1 0x54e9 ADL-N I2C
product INTEL ADL_N_I2C_2 0x54ea ADL-N I2C
product INTEL ADL_N_I2C_3 0x54eb ADL-N I2C
product INTEL ADL_N_XHCI 0x54ed ADL-N xHCI
product INTEL ADL_N_XDCI 0x54ee ADL-N xDCI
product INTEL ADL_N_SRAM 0x54ef ADL-N SRAM
product INTEL WL_22500_16 0x54f0 Wi-Fi 6 AX211 product INTEL WL_22500_16 0x54f0 Wi-Fi 6 AX211
product INTEL ADL_N_GSPI_2 0x54fb ADL-N GSPI
product INTEL ADL_N_ISH 0x54fc ADL-N ISH
product INTEL ADL_N_UFS 0x54ff ADL-N UFS
product INTEL I225_LMVP 0x5502 I225-LMvP product INTEL I225_LMVP 0x5502 I225-LMvP
product INTEL I226_K 0x5504 I226-K product INTEL I226_K 0x5504 I226-K
product INTEL I219_LM18 0x550a I219-LM product INTEL I219_LM18 0x550a I219-LM

View File

@ -2,7 +2,7 @@
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
* *
* generated from: * generated from:
* OpenBSD: pcidevs,v 1.2053 2023/11/14 02:25:48 jsg Exp * OpenBSD: pcidevs,v 1.2055 2023/11/23 14:21:47 jsg Exp
*/ */
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */ /* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
@ -1282,6 +1282,7 @@
#define PCI_PRODUCT_ATI_KAVERI_21 0x131c /* Kaveri Radeon R7 */ #define PCI_PRODUCT_ATI_KAVERI_21 0x131c /* Kaveri Radeon R7 */
#define PCI_PRODUCT_ATI_KAVERI_22 0x131d /* Kaveri Radeon R6 */ #define PCI_PRODUCT_ATI_KAVERI_22 0x131d /* Kaveri Radeon R6 */
#define PCI_PRODUCT_ATI_CYAN_SKILLFISH_1 0x13fe /* Cyan Skillfish */ #define PCI_PRODUCT_ATI_CYAN_SKILLFISH_1 0x13fe /* Cyan Skillfish */
#define PCI_PRODUCT_ATI_VANGOGH_0932 0x1435 /* Van Gogh */
#define PCI_PRODUCT_ATI_CYAN_SKILLFISH_2 0x143f /* Cyan Skillfish */ #define PCI_PRODUCT_ATI_CYAN_SKILLFISH_2 0x143f /* Cyan Skillfish */
#define PCI_PRODUCT_ATI_PPB_1 0x1478 /* PCIE */ #define PCI_PRODUCT_ATI_PPB_1 0x1478 /* PCIE */
#define PCI_PRODUCT_ATI_PPB_2 0x1479 /* PCIE */ #define PCI_PRODUCT_ATI_PPB_2 0x1479 /* PCIE */
@ -1295,7 +1296,7 @@
#define PCI_PRODUCT_ATI_RENOIR 0x1636 /* Renoir */ #define PCI_PRODUCT_ATI_RENOIR 0x1636 /* Renoir */
#define PCI_PRODUCT_ATI_RENOIR_HDA 0x1637 /* Renoir HD Audio */ #define PCI_PRODUCT_ATI_RENOIR_HDA 0x1637 /* Renoir HD Audio */
#define PCI_PRODUCT_ATI_CEZANNE 0x1638 /* Cezanne */ #define PCI_PRODUCT_ATI_CEZANNE 0x1638 /* Cezanne */
#define PCI_PRODUCT_ATI_VANGOGH 0x163f /* Van Gogh */ #define PCI_PRODUCT_ATI_VANGOGH_0405 0x163f /* Van Gogh */
#define PCI_PRODUCT_ATI_VANGOGH_HDA 0x1640 /* Van Gogh HD Audio */ #define PCI_PRODUCT_ATI_VANGOGH_HDA 0x1640 /* Van Gogh HD Audio */
#define PCI_PRODUCT_ATI_LUCIENNE 0x164c /* Lucienne */ #define PCI_PRODUCT_ATI_LUCIENNE 0x164c /* Lucienne */
#define PCI_PRODUCT_ATI_YELLOW_CARP_1 0x164d /* Rembrandt */ #define PCI_PRODUCT_ATI_YELLOW_CARP_1 0x164d /* Rembrandt */
@ -5606,8 +5607,11 @@
#define PCI_PRODUCT_INTEL_ADL_S_PCIE_1 0x460d /* Core 12G PCIE */ #define PCI_PRODUCT_INTEL_ADL_S_PCIE_1 0x460d /* Core 12G PCIE */
#define PCI_PRODUCT_INTEL_ADL_XDCI 0x460e /* Core 12G xDCI */ #define PCI_PRODUCT_INTEL_ADL_XDCI 0x460e /* Core 12G xDCI */
#define PCI_PRODUCT_INTEL_ADL_S_HB_6 0x4610 /* Core 12G Host */ #define PCI_PRODUCT_INTEL_ADL_S_HB_6 0x4610 /* Core 12G Host */
#define PCI_PRODUCT_INTEL_ADL_N_HB_1 0x4617 /* ADL-N Host */
#define PCI_PRODUCT_INTEL_ADL_U15_HB_2 0x4619 /* Core 12G Host */ #define PCI_PRODUCT_INTEL_ADL_U15_HB_2 0x4619 /* Core 12G Host */
#define PCI_PRODUCT_INTEL_ADL_U9_HB_3 0x461a /* Core 12G Host */ #define PCI_PRODUCT_INTEL_ADL_U9_HB_3 0x461a /* Core 12G Host */
#define PCI_PRODUCT_INTEL_ADL_N_HB_2 0x461b /* N200 Host */
#define PCI_PRODUCT_INTEL_ADL_N_HB_3 0x461c /* N100 Host */
#define PCI_PRODUCT_INTEL_ADL_S_DTT 0x461d /* Core 12G DTT */ #define PCI_PRODUCT_INTEL_ADL_S_DTT 0x461d /* Core 12G DTT */
#define PCI_PRODUCT_INTEL_ADL_XHCI 0x461e /* Core 12G xHCI */ #define PCI_PRODUCT_INTEL_ADL_XHCI 0x461e /* Core 12G xHCI */
#define PCI_PRODUCT_INTEL_ADL_TBT_PCIE3 0x461f /* Core 12G PCIE */ #define PCI_PRODUCT_INTEL_ADL_TBT_PCIE3 0x461f /* Core 12G PCIE */
@ -5900,7 +5904,49 @@
#define PCI_PRODUCT_INTEL_600SERIES_LP_UFS 0x51ff /* 600 Series UFS */ #define PCI_PRODUCT_INTEL_600SERIES_LP_UFS 0x51ff /* 600 Series UFS */
#define PCI_PRODUCT_INTEL_80960RD 0x5200 /* i960 RD */ #define PCI_PRODUCT_INTEL_80960RD 0x5200 /* i960 RD */
#define PCI_PRODUCT_INTEL_PRO_100_SERVER 0x5201 /* PRO 100 Server */ #define PCI_PRODUCT_INTEL_PRO_100_SERVER 0x5201 /* PRO 100 Server */
#define PCI_PRODUCT_INTEL_ADL_N_ESPI 0x5481 /* ADL-N eSPI */
#define PCI_PRODUCT_INTEL_ADL_N_P2SB 0x54a0 /* ADL-N P2SB */
#define PCI_PRODUCT_INTEL_ADL_N_PMC 0x54a1 /* ADL-N PMC */
#define PCI_PRODUCT_INTEL_ADL_N_SMB 0x54a3 /* ADL-N SMBus */
#define PCI_PRODUCT_INTEL_ADL_N_SPI 0x54a4 /* ADL-N SPI */
#define PCI_PRODUCT_INTEL_ADL_N_TH 0x54a6 /* ADL-N TH */
#define PCI_PRODUCT_INTEL_ADL_N_UART_0 0x54a8 /* ADL-N UART */
#define PCI_PRODUCT_INTEL_ADL_N_UART_1 0x54a9 /* ADL-N UART */
#define PCI_PRODUCT_INTEL_ADL_N_GSPI_0 0x54aa /* ADL-N GSPI */
#define PCI_PRODUCT_INTEL_ADL_N_GSPI_1 0x54ab /* ADL-N GSPI */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_9 0x54b0 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_10 0x54b1 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_11 0x54b2 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_12 0x54b3 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_1 0x54b8 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_2 0x54b9 /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_3 0x54ba /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_4 0x54bb /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_PCIE_7 0x54be /* ADL-N PCIE */
#define PCI_PRODUCT_INTEL_ADL_N_EMMC 0x54c4 /* ADL-N eMMC */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_4 0x54c5 /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_5 0x54c6 /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_UART_2 0x54c7 /* ADL-N UART */
#define PCI_PRODUCT_INTEL_ADL_N_HDA 0x54c8 /* ADL-N HD Audio */
#define PCI_PRODUCT_INTEL_ADL_N_THC_0 0x54d0 /* ADL-N THC */
#define PCI_PRODUCT_INTEL_ADL_N_THC_1 0x54d1 /* ADL-N THC */
#define PCI_PRODUCT_INTEL_ADL_N_AHCI 0x54d3 /* ADL-N AHCI */
#define PCI_PRODUCT_INTEL_ADL_N_UART_3 0x54da /* ADL-N UART */
#define PCI_PRODUCT_INTEL_ADL_N_HECI_1 0x54e0 /* ADL-N HECI */
#define PCI_PRODUCT_INTEL_ADL_N_HECI_2 0x54e1 /* ADL-N HECI */
#define PCI_PRODUCT_INTEL_ADL_N_HECI_3 0x54e4 /* ADL-N HECI */
#define PCI_PRODUCT_INTEL_ADL_N_HECI_4 0x54e5 /* ADL-N HECI */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_0 0x54e8 /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_1 0x54e9 /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_2 0x54ea /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_I2C_3 0x54eb /* ADL-N I2C */
#define PCI_PRODUCT_INTEL_ADL_N_XHCI 0x54ed /* ADL-N xHCI */
#define PCI_PRODUCT_INTEL_ADL_N_XDCI 0x54ee /* ADL-N xDCI */
#define PCI_PRODUCT_INTEL_ADL_N_SRAM 0x54ef /* ADL-N SRAM */
#define PCI_PRODUCT_INTEL_WL_22500_16 0x54f0 /* Wi-Fi 6 AX211 */ #define PCI_PRODUCT_INTEL_WL_22500_16 0x54f0 /* Wi-Fi 6 AX211 */
#define PCI_PRODUCT_INTEL_ADL_N_GSPI_2 0x54fb /* ADL-N GSPI */
#define PCI_PRODUCT_INTEL_ADL_N_ISH 0x54fc /* ADL-N ISH */
#define PCI_PRODUCT_INTEL_ADL_N_UFS 0x54ff /* ADL-N UFS */
#define PCI_PRODUCT_INTEL_I225_LMVP 0x5502 /* I225-LMvP */ #define PCI_PRODUCT_INTEL_I225_LMVP 0x5502 /* I225-LMvP */
#define PCI_PRODUCT_INTEL_I226_K 0x5504 /* I226-K */ #define PCI_PRODUCT_INTEL_I226_K 0x5504 /* I226-K */
#define PCI_PRODUCT_INTEL_I219_LM18 0x550a /* I219-LM */ #define PCI_PRODUCT_INTEL_I219_LM18 0x550a /* I219-LM */

View File

@ -2,7 +2,7 @@
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
* *
* generated from: * generated from:
* OpenBSD: pcidevs,v 1.2053 2023/11/14 02:25:48 jsg Exp * OpenBSD: pcidevs,v 1.2055 2023/11/23 14:21:47 jsg Exp
*/ */
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */ /* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
@ -3247,6 +3247,10 @@ static const struct pci_known_product pci_known_products[] = {
PCI_VENDOR_ATI, PCI_PRODUCT_ATI_CYAN_SKILLFISH_1, PCI_VENDOR_ATI, PCI_PRODUCT_ATI_CYAN_SKILLFISH_1,
"Cyan Skillfish", "Cyan Skillfish",
}, },
{
PCI_VENDOR_ATI, PCI_PRODUCT_ATI_VANGOGH_0932,
"Van Gogh",
},
{ {
PCI_VENDOR_ATI, PCI_PRODUCT_ATI_CYAN_SKILLFISH_2, PCI_VENDOR_ATI, PCI_PRODUCT_ATI_CYAN_SKILLFISH_2,
"Cyan Skillfish", "Cyan Skillfish",
@ -3300,7 +3304,7 @@ static const struct pci_known_product pci_known_products[] = {
"Cezanne", "Cezanne",
}, },
{ {
PCI_VENDOR_ATI, PCI_PRODUCT_ATI_VANGOGH, PCI_VENDOR_ATI, PCI_PRODUCT_ATI_VANGOGH_0405,
"Van Gogh", "Van Gogh",
}, },
{ {
@ -19763,6 +19767,10 @@ static const struct pci_known_product pci_known_products[] = {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_S_HB_6, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_S_HB_6,
"Core 12G Host", "Core 12G Host",
}, },
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HB_1,
"ADL-N Host",
},
{ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_U15_HB_2, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_U15_HB_2,
"Core 12G Host", "Core 12G Host",
@ -19771,6 +19779,14 @@ static const struct pci_known_product pci_known_products[] = {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_U9_HB_3, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_U9_HB_3,
"Core 12G Host", "Core 12G Host",
}, },
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HB_2,
"N200 Host",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HB_3,
"N100 Host",
},
{ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_S_DTT, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_S_DTT,
"Core 12G DTT", "Core 12G DTT",
@ -20939,10 +20955,178 @@ static const struct pci_known_product pci_known_products[] = {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_SERVER, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_SERVER,
"PRO 100 Server", "PRO 100 Server",
}, },
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_ESPI,
"ADL-N eSPI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_P2SB,
"ADL-N P2SB",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PMC,
"ADL-N PMC",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_SMB,
"ADL-N SMBus",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_SPI,
"ADL-N SPI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_TH,
"ADL-N TH",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_UART_0,
"ADL-N UART",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_UART_1,
"ADL-N UART",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_GSPI_0,
"ADL-N GSPI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_GSPI_1,
"ADL-N GSPI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_9,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_10,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_11,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_12,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_1,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_2,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_3,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_4,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_PCIE_7,
"ADL-N PCIE",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_EMMC,
"ADL-N eMMC",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_4,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_5,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_UART_2,
"ADL-N UART",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HDA,
"ADL-N HD Audio",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_THC_0,
"ADL-N THC",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_THC_1,
"ADL-N THC",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_AHCI,
"ADL-N AHCI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_UART_3,
"ADL-N UART",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HECI_1,
"ADL-N HECI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HECI_2,
"ADL-N HECI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HECI_3,
"ADL-N HECI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_HECI_4,
"ADL-N HECI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_0,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_1,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_2,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_I2C_3,
"ADL-N I2C",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_XHCI,
"ADL-N xHCI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_XDCI,
"ADL-N xDCI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_SRAM,
"ADL-N SRAM",
},
{ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_16, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_16,
"Wi-Fi 6 AX211", "Wi-Fi 6 AX211",
}, },
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_GSPI_2,
"ADL-N GSPI",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_ISH,
"ADL-N ISH",
},
{
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_ADL_N_UFS,
"ADL-N UFS",
},
{ {
PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I225_LMVP, PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I225_LMVP,
"I225-LMvP", "I225-LMvP",

View File

@ -1,4 +1,4 @@
/* $OpenBSD: wskbd.c,v 1.116 2023/11/22 18:19:25 tobhe Exp $ */ /* $OpenBSD: wskbd.c,v 1.117 2023/11/23 15:02:57 deraadt Exp $ */
/* $NetBSD: wskbd.c,v 1.80 2005/05/04 01:52:16 augustss Exp $ */ /* $NetBSD: wskbd.c,v 1.80 2005/05/04 01:52:16 augustss Exp $ */
/* /*
@ -94,6 +94,7 @@
#include <sys/errno.h> #include <sys/errno.h>
#include <sys/fcntl.h> #include <sys/fcntl.h>
#include <sys/vnode.h> #include <sys/vnode.h>
#include <sys/task.h>
#include <ddb/db_var.h> #include <ddb/db_var.h>
@ -113,7 +114,6 @@
#if NWSDISPLAY > 0 #if NWSDISPLAY > 0
#include <sys/atomic.h> #include <sys/atomic.h>
#include <sys/task.h>
#endif #endif
#ifdef WSKBD_DEBUG #ifdef WSKBD_DEBUG

View File

@ -1,4 +1,4 @@
/* $OpenBSD: kern_physio.c,v 1.47 2020/02/20 16:26:01 krw Exp $ */ /* $OpenBSD: kern_physio.c,v 1.48 2023/11/24 00:15:42 asou Exp $ */
/* $NetBSD: kern_physio.c,v 1.28 1997/05/19 10:43:28 pk Exp $ */ /* $NetBSD: kern_physio.c,v 1.28 1997/05/19 10:43:28 pk Exp $ */
/*- /*-
@ -113,8 +113,8 @@ physio(void (*strategy)(struct buf *), dev_t dev, int flags,
/* /*
* Because iov_len is size_t (unsigned) but b_bcount is * Because iov_len is size_t (unsigned) but b_bcount is
* long (signed), an overflow is possible. Therefore * long (signed), an overflow is possible. Therefore
* limit b_bcount to LONG_MAX before calling the provided * limit b_bcount to LONG_MAX before calling the
* minphys. * provided minphys.
*/ */
if (iovp->iov_len > LONG_MAX) if (iovp->iov_len > LONG_MAX)
bp->b_bcount = LONG_MAX; bp->b_bcount = LONG_MAX;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: if_veb.c,v 1.31 2023/05/16 14:32:54 jan Exp $ */ /* $OpenBSD: if_veb.c,v 1.32 2023/11/23 23:45:10 dlg Exp $ */
/* /*
* Copyright (c) 2021 David Gwynne <dlg@openbsd.org> * Copyright (c) 2021 David Gwynne <dlg@openbsd.org>
@ -612,6 +612,7 @@ veb_pf(struct ifnet *ifp0, int dir, struct mbuf *m)
{ {
struct ether_header *eh, copy; struct ether_header *eh, copy;
const struct veb_pf_ip_family *fam; const struct veb_pf_ip_family *fam;
int hlen;
/* /*
* pf runs on vport interfaces when they enter or leave the * pf runs on vport interfaces when they enter or leave the
@ -640,11 +641,9 @@ veb_pf(struct ifnet *ifp0, int dir, struct mbuf *m)
copy = *eh; copy = *eh;
m_adj(m, sizeof(*eh)); m_adj(m, sizeof(*eh));
if (dir == PF_IN) { m = (*fam->ip_check)(ifp0, m);
m = (*fam->ip_check)(ifp0, m); if (m == NULL)
if (m == NULL) return (NULL);
return (NULL);
}
if (pf_test(fam->af, dir, ifp0, &m) != PF_PASS) { if (pf_test(fam->af, dir, ifp0, &m) != PF_PASS) {
m_freem(m); m_freem(m);
@ -660,12 +659,14 @@ veb_pf(struct ifnet *ifp0, int dir, struct mbuf *m)
return (NULL); return (NULL);
} }
m = m_prepend(m, sizeof(*eh), M_DONTWAIT); hlen = roundup(sizeof(*eh), sizeof(long));
m = m_prepend(m, hlen, M_DONTWAIT);
if (m == NULL) if (m == NULL)
return (NULL); return (NULL);
/* checksum? */ /* checksum? */
m_adj(m, hlen - sizeof(*eh));
eh = mtod(m, struct ether_header *); eh = mtod(m, struct ether_header *);
*eh = copy; *eh = copy;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: extern.h,v 1.45 2023/04/28 10:24:38 claudio Exp $ */ /* $OpenBSD: extern.h,v 1.46 2023/11/23 11:59:53 job Exp $ */
/* /*
* Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
* *
@ -146,6 +146,7 @@ struct opts {
int numeric_ids; /* --numeric-ids */ int numeric_ids; /* --numeric-ids */
int one_file_system; /* -x */ int one_file_system; /* -x */
int ignore_times; /* -I */ int ignore_times; /* -I */
int ignore_dir_times; /* -O */
int size_only; /* --size-only */ int size_only; /* --size-only */
int alt_base_mode; int alt_base_mode;
off_t max_size; /* --max-size */ off_t max_size; /* --max-size */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: fargs.c,v 1.24 2023/04/28 10:24:38 claudio Exp $ */ /* $OpenBSD: fargs.c,v 1.25 2023/11/23 11:59:53 job Exp $ */
/* /*
* Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
* *
@ -140,6 +140,8 @@ fargs_cmdline(struct sess *sess, const struct fargs *f, size_t *skip)
/* extra options for the receiver (local is sender) */ /* extra options for the receiver (local is sender) */
if (f->mode == FARGS_SENDER) { if (f->mode == FARGS_SENDER) {
if (sess->opts->ignore_dir_times)
addargs(&args, "-O");
if (sess->opts->size_only) if (sess->opts->size_only)
addargs(&args, "--size-only"); addargs(&args, "--size-only");

View File

@ -1,4 +1,4 @@
/* $OpenBSD: main.c,v 1.68 2023/04/28 10:24:38 claudio Exp $ */ /* $OpenBSD: main.c,v 1.69 2023/11/23 11:59:53 job Exp $ */
/* /*
* Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
* *
@ -321,6 +321,7 @@ const struct option lopts[] = {
{ "no-links", no_argument, &opts.preserve_links, 0 }, { "no-links", no_argument, &opts.preserve_links, 0 },
{ "no-motd", no_argument, &opts.no_motd, 1 }, { "no-motd", no_argument, &opts.no_motd, 1 },
{ "numeric-ids", no_argument, &opts.numeric_ids, 1 }, { "numeric-ids", no_argument, &opts.numeric_ids, 1 },
{ "omit-dir-times", no_argument, &opts.ignore_dir_times, 1 },
{ "owner", no_argument, &opts.preserve_uids, 1 }, { "owner", no_argument, &opts.preserve_uids, 1 },
{ "no-owner", no_argument, &opts.preserve_uids, 0 }, { "no-owner", no_argument, &opts.preserve_uids, 0 },
{ "perms", no_argument, &opts.preserve_perms, 1 }, { "perms", no_argument, &opts.preserve_perms, 1 },
@ -363,7 +364,7 @@ main(int argc, char *argv[])
opts.max_size = opts.min_size = -1; opts.max_size = opts.min_size = -1;
while ((c = getopt_long(argc, argv, "aDe:ghIlnoprtVvxz", lopts, &lidx)) while ((c = getopt_long(argc, argv, "aDe:ghIlnOoprtVvxz", lopts, &lidx))
!= -1) { != -1) {
switch (c) { switch (c) {
case 'D': case 'D':
@ -395,6 +396,9 @@ main(int argc, char *argv[])
case 'n': case 'n':
opts.dry_run = 1; opts.dry_run = 1;
break; break;
case 'O':
opts.ignore_dir_times = 1;
break;
case 'o': case 'o':
opts.preserve_uids = 1; opts.preserve_uids = 1;
break; break;
@ -637,7 +641,7 @@ basedir:
exit(rc); exit(rc);
usage: usage:
fprintf(stderr, "usage: %s" fprintf(stderr, "usage: %s"
" [-aDgIlnoprtVvx] [-e program] [--address=sourceaddr]\n" " [-aDgIlnOoprtVvx] [-e program] [--address=sourceaddr]\n"
"\t[--contimeout=seconds] [--compare-dest=dir] [--del] [--exclude]\n" "\t[--contimeout=seconds] [--compare-dest=dir] [--del] [--exclude]\n"
"\t[--exclude-from=file] [--include] [--include-from=file]\n" "\t[--exclude-from=file] [--include] [--include-from=file]\n"
"\t[--no-motd] [--numeric-ids] [--port=portnumber]\n" "\t[--no-motd] [--numeric-ids] [--port=portnumber]\n"

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: rsync.1,v 1.33 2023/04/28 10:24:38 claudio Exp $ .\" $OpenBSD: rsync.1,v 1.34 2023/11/23 11:59:53 job Exp $
.\" .\"
.\" Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> .\" Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
.\" .\"
@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: April 28 2023 $ .Dd $Mdocdate: November 23 2023 $
.Dt OPENRSYNC 1 .Dt OPENRSYNC 1
.Os .Os
.Sh NAME .Sh NAME
@ -22,7 +22,7 @@
.Nd synchronise local and remote files .Nd synchronise local and remote files
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm openrsync .Nm openrsync
.Op Fl aDgIlnoprtVvx .Op Fl aDgIlnOoprtVvx
.Op Fl e Ar program .Op Fl e Ar program
.Op Fl -address Ns = Ns Ar sourceaddr .Op Fl -address Ns = Ns Ar sourceaddr
.Op Fl -compare-dest Ns = Ns Ar directory .Op Fl -compare-dest Ns = Ns Ar directory
@ -165,6 +165,10 @@ Has no effect unless
or or
.Fl o .Fl o
is also given. is also given.
.It Fl O , -omit-dir-times
Don't set directory modification times to match the source.
Takes precedence over
.Fl t .
.It Fl o , -owner .It Fl o , -owner
Set the user name to match the source, with similar matching logic as for Set the user name to match the source, with similar matching logic as for
.Fl g . .Fl g .

View File

@ -1,4 +1,4 @@
/* $OpenBSD: uploader.c,v 1.34 2023/04/28 10:24:39 claudio Exp $ */ /* $OpenBSD: uploader.c,v 1.35 2023/11/23 11:59:53 job Exp $ */
/* /*
* Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2019 Florian Obser <florian@openbsd.org> * Copyright (c) 2019 Florian Obser <florian@openbsd.org>
@ -608,19 +608,21 @@ post_dir(struct sess *sess, const struct upload *u, size_t idx)
* FIXME: run rsync_set_metadata()? * FIXME: run rsync_set_metadata()?
*/ */
if (u->newdir[idx] || if (!sess->opts->ignore_dir_times) {
(sess->opts->preserve_times && if (u->newdir[idx] ||
st.st_mtime != f->st.mtime)) { (sess->opts->preserve_times &&
tv[0].tv_sec = time(NULL); st.st_mtime != f->st.mtime)) {
tv[0].tv_nsec = 0; tv[0].tv_sec = time(NULL);
tv[1].tv_sec = f->st.mtime; tv[0].tv_nsec = 0;
tv[1].tv_nsec = 0; tv[1].tv_sec = f->st.mtime;
rc = utimensat(u->rootfd, f->path, tv, 0); tv[1].tv_nsec = 0;
if (rc == -1) { rc = utimensat(u->rootfd, f->path, tv, 0);
ERR("%s: utimensat", f->path); if (rc == -1) {
return 0; ERR("%s: utimensat", f->path);
return 0;
}
LOG4("%s: updated date", f->path);
} }
LOG4("%s: updated date", f->path);
} }
/* /*

View File

@ -1,4 +1,4 @@
/* $OpenBSD: clientloop.c,v 1.401 2023/11/15 22:51:49 djm Exp $ */ /* $OpenBSD: clientloop.c,v 1.402 2023/11/24 00:31:30 dtucker Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -202,6 +202,7 @@ quit_message(const char *fmt, ...)
if ((r = sshbuf_putf(stderr_buffer, "%s\r\n", msg)) != 0) if ((r = sshbuf_putf(stderr_buffer, "%s\r\n", msg)) != 0)
fatal_fr(r, "sshbuf_putf"); fatal_fr(r, "sshbuf_putf");
free(msg);
quit_pending = 1; quit_pending = 1;
} }

View File

@ -1,4 +1,4 @@
/* $OpenBSD: mux.c,v 1.100 2023/08/18 01:37:41 djm Exp $ */ /* $OpenBSD: mux.c,v 1.101 2023/11/23 03:37:05 dtucker Exp $ */
/* /*
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
* *
@ -2257,7 +2257,7 @@ muxclient(const char *path)
switch (options.control_master) { switch (options.control_master) {
case SSHCTL_MASTER_AUTO: case SSHCTL_MASTER_AUTO:
case SSHCTL_MASTER_AUTO_ASK: case SSHCTL_MASTER_AUTO_ASK:
debug("auto-mux: Trying existing master"); debug("auto-mux: Trying existing master at '%s'", path);
/* FALLTHROUGH */ /* FALLTHROUGH */
case SSHCTL_MASTER_NO: case SSHCTL_MASTER_NO:
break; break;

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: dhcp-options.5,v 1.33 2023/11/22 18:06:44 florian Exp $ .\" $OpenBSD: dhcp-options.5,v 1.34 2023/11/23 16:30:12 florian Exp $
.\" .\"
.\" Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium. .\" Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium.
.\" All rights reserved. .\" All rights reserved.
@ -36,7 +36,7 @@
.\" see ``http://www.isc.org/isc''. To learn more about Vixie .\" see ``http://www.isc.org/isc''. To learn more about Vixie
.\" Enterprises, see ``http://www.vix.com''. .\" Enterprises, see ``http://www.vix.com''.
.\" .\"
.Dd $Mdocdate: November 22 2023 $ .Dd $Mdocdate: November 23 2023 $
.Dt DHCP-OPTIONS 5 .Dt DHCP-OPTIONS 5
.Os .Os
.Sh NAME .Sh NAME
@ -347,7 +347,7 @@ for packet forwarding.
A value of 0 means disable IP forwarding, and a value of 1 means enable A value of 0 means disable IP forwarding, and a value of 1 means enable
IP forwarding. IP forwarding.
.It Ic option ipv6-only-preferred Ar uint32 ; .It Ic option ipv6-only-preferred Ar uint32 ;
This option specifies that a NAT64 is available and the pool is IPv6-mostly This option specifies that NAT64 is available and the pool is IPv6-mostly
capable. capable.
This option is specified in RFC 8925. This option is specified in RFC 8925.
.It Ic option irc-server Ar ip-address Oo , Ar ip-address ... Oc ; .It Ic option irc-server Ar ip-address Oo , Ar ip-address ... Oc ;

View File

@ -1,5 +1,5 @@
# ex:ts=8 sw=4: # ex:ts=8 sw=4:
# $OpenBSD: PackingList.pm,v 1.152 2023/06/13 09:07:17 espie Exp $ # $OpenBSD: PackingList.pm,v 1.153 2023/11/23 09:44:08 espie Exp $
# #
# Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org> # Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org>
# #
@ -409,7 +409,7 @@ sub match_pkgpath($self, $plist2)
} }
our @unique_categories = our @unique_categories =
(qw(name url version signer digital-signature no-default-conflict manual-installation firmware always-update is-branch extrainfo localbase arch)); (qw(name url version signer digital-signature no-default-conflict manual-installation firmware always-update updatedb is-branch extrainfo localbase arch));
our @list_categories = our @list_categories =
(qw(conflict pkgpath ask-update libset depend (qw(conflict pkgpath ask-update libset depend

View File

@ -1,4 +1,4 @@
/* $OpenBSD: rsync.c,v 1.46 2022/12/28 21:30:18 jmc Exp $ */ /* $OpenBSD: rsync.c,v 1.47 2023/11/23 13:01:15 job Exp $ */
/* /*
* Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
* *
@ -145,7 +145,7 @@ exec_rsync(const char *prog, const char *bind_addr, char *uri, char *dst,
err(1, "pledge"); err(1, "pledge");
i = 0; i = 0;
args[i++] = (char *)prog; args[i++] = (char *)prog;
args[i++] = "-rt"; args[i++] = "-rtO";
args[i++] = "--no-motd"; args[i++] = "--no-motd";
args[i++] = "--max-size=" STRINGIFY(MAX_FILE_SIZE); args[i++] = "--max-size=" STRINGIFY(MAX_FILE_SIZE);
args[i++] = "--contimeout=" STRINGIFY(MAX_CONN_TIMEOUT); args[i++] = "--contimeout=" STRINGIFY(MAX_CONN_TIMEOUT);