diff --git a/sys/arch/arm64/arm64/machdep.c b/sys/arch/arm64/arm64/machdep.c index 98437f72c..7b53ee1f4 100644 --- a/sys/arch/arm64/arm64/machdep.c +++ b/sys/arch/arm64/arm64/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.89 2024/04/29 13:01:54 jsg Exp $ */ +/* $OpenBSD: machdep.c,v 1.90 2024/07/03 21:04:04 kettenis Exp $ */ /* * Copyright (c) 2014 Patrick Wildt * Copyright (c) 2021 Mark Kettenis @@ -1170,6 +1170,10 @@ pmap_bootstrap_bs_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, { u_long startpa, pa, endpa; vaddr_t va; + int cache = PMAP_CACHE_DEV_NGNRNE; + + if (flags & BUS_SPACE_MAP_PREFETCHABLE) + cache = PMAP_CACHE_CI; va = virtual_avail; /* steal memory from virtual avail. */ @@ -1179,8 +1183,7 @@ pmap_bootstrap_bs_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, *bshp = (bus_space_handle_t)(va + (bpa - startpa)); for (pa = startpa; pa < endpa; pa += PAGE_SIZE, va += PAGE_SIZE) - pmap_kenter_cache(va, pa, PROT_READ | PROT_WRITE, - PMAP_CACHE_DEV_NGNRNE); + pmap_kenter_cache(va, pa, PROT_READ | PROT_WRITE, cache); virtual_avail = va; diff --git a/sys/arch/arm64/dev/agintc.c b/sys/arch/arm64/dev/agintc.c index de7e54cee..26c88d518 100644 --- a/sys/arch/arm64/dev/agintc.c +++ b/sys/arch/arm64/dev/agintc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agintc.c,v 1.58 2024/06/23 21:58:34 patrick Exp $ */ +/* $OpenBSD: agintc.c,v 1.59 2024/07/03 22:37:00 patrick Exp $ */ /* * Copyright (c) 2007, 2009, 2011, 2017 Dale Rahn * Copyright (c) 2018 Mark Kettenis @@ -1705,6 +1705,13 @@ agintc_msi_attach(struct device *parent, struct device *self, void *aux) size = (1ULL << sc->sc_devbits) * sc->sc_dte_sz; size = roundup(size, sc->sc_dtt_pgsz); + /* FIXME: For now, skip registering MSI controller */ + if (size / sc->sc_dtt_pgsz > GITS_BASER_SZ_MASK + 1) { + printf(": cannot support %u devbits on %lu pgsz\n", + sc->sc_devbits, sc->sc_dtt_pgsz); + return; + } + /* Clamp down to maximum configurable num pages */ if (size / sc->sc_dtt_pgsz > GITS_BASER_SZ_MASK + 1) size = (GITS_BASER_SZ_MASK + 1) * sc->sc_dtt_pgsz; diff --git a/sys/arch/arm64/dev/arm64_bus_space.c b/sys/arch/arm64/dev/arm64_bus_space.c index e4847cbb0..f78905fb4 100644 --- a/sys/arch/arm64/dev/arm64_bus_space.c +++ b/sys/arch/arm64/dev/arm64_bus_space.c @@ -1,4 +1,4 @@ -/* $OpenBSD: arm64_bus_space.c,v 1.8 2021/02/16 12:33:22 kettenis Exp $ */ +/* $OpenBSD: arm64_bus_space.c,v 1.9 2024/07/03 21:04:04 kettenis Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -195,6 +195,8 @@ generic_space_map(bus_space_tag_t t, bus_addr_t offs, bus_size_t size, if (flags & BUS_SPACE_MAP_CACHEABLE) cache = PMAP_CACHE_WB; + if (flags & BUS_SPACE_MAP_PREFETCHABLE) + cache = PMAP_CACHE_CI; if (flags & BUS_SPACE_MAP_POSTED) cache = PMAP_CACHE_DEV_NGNRE; diff --git a/sys/arch/arm64/stand/efiboot/efiboot.c b/sys/arch/arm64/stand/efiboot/efiboot.c index 564921d0c..c9fd44b00 100644 --- a/sys/arch/arm64/stand/efiboot/efiboot.c +++ b/sys/arch/arm64/stand/efiboot/efiboot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: efiboot.c,v 1.53 2024/06/20 21:52:08 kettenis Exp $ */ +/* $OpenBSD: efiboot.c,v 1.55 2024/07/03 22:29:37 kettenis Exp $ */ /* * Copyright (c) 2015 YASUOKA Masahiko @@ -1109,10 +1109,26 @@ mdrandom(char *buf, size_t buflen) #define FW_PATH "/etc/firmware/dtb/" +struct smbios_dtb { + const char *vendor; + const char *prod; + const char *dtb; +} smbios_dtb[] = { + { "ASUS", "ASUS Vivobook S 15 S5507", + "qcom/x1e80100-asus-vivobook-s15.dtb" }, + { "LENOVO", "21BX", + "qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" }, + { "LENOVO", "21BY", + "qcom/sc8280xp-lenovo-thinkpad-x13s.dtb" }, +}; + void * efi_fdt(void) { extern char *hw_vendor, *hw_prod; + size_t vendorlen, prodlen; + char dtb[256]; + int i; /* 'mach dtb' has precedence */ if (fdt_override != NULL) @@ -1122,11 +1138,14 @@ efi_fdt(void) if (hw_vendor == NULL || hw_prod == NULL) return fdt_sys; - 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"); + for (i = 0; i < nitems(smbios_dtb); i++) { + vendorlen = strlen(smbios_dtb[i].vendor); + prodlen = strlen(smbios_dtb[i].prod); + if (strncmp(hw_vendor, smbios_dtb[i].vendor, vendorlen) == 0 && + strncmp(hw_prod, smbios_dtb[i].prod, prodlen) == 0) { + snprintf(dtb, sizeof(dtb), "%s%s", FW_PATH, + smbios_dtb[i].dtb); + fdt_load_override(dtb); /* TODO: find a better mechanism */ cnset(ttydev("fb0")); } diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c index fb3821092..ec16111a8 100644 --- a/sys/kern/kern_lock.c +++ b/sys/kern/kern_lock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_lock.c,v 1.74 2024/05/29 18:55:45 claudio Exp $ */ +/* $OpenBSD: kern_lock.c,v 1.75 2024/07/03 01:36:50 jsg Exp $ */ /* * Copyright (c) 2017 Visa Hankala @@ -194,30 +194,6 @@ __mp_release_all(struct __mp_lock *mpl) return (rv); } -int -__mp_release_all_but_one(struct __mp_lock *mpl) -{ - struct __mp_lock_cpu *cpu = &mpl->mpl_cpus[cpu_number()]; - int rv = cpu->mplc_depth - 1; -#ifdef WITNESS - int i; - - for (i = 0; i < rv; i++) - WITNESS_UNLOCK(&mpl->mpl_lock_obj, LOP_EXCLUSIVE); -#endif - -#ifdef MP_LOCKDEBUG - if (!__mp_lock_held(mpl, curcpu())) { - db_printf("__mp_release_all_but_one(%p): not held lock\n", mpl); - db_enter(); - } -#endif - - cpu->mplc_depth = 1; - - return (rv); -} - void __mp_acquire_count(struct __mp_lock *mpl, int count) { diff --git a/sys/sys/mplock.h b/sys/sys/mplock.h index 34f2f97c9..b28ac240d 100644 --- a/sys/sys/mplock.h +++ b/sys/sys/mplock.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mplock.h,v 1.13 2019/04/23 13:35:12 visa Exp $ */ +/* $OpenBSD: mplock.h,v 1.14 2024/07/03 01:36:50 jsg Exp $ */ /* * Copyright (c) 2004 Niklas Hallqvist. All rights reserved. @@ -51,7 +51,6 @@ void ___mp_lock_init(struct __mp_lock *, const struct lock_type *); void __mp_lock(struct __mp_lock *); void __mp_unlock(struct __mp_lock *); int __mp_release_all(struct __mp_lock *); -int __mp_release_all_but_one(struct __mp_lock *); void __mp_acquire_count(struct __mp_lock *, int); int __mp_lock_held(struct __mp_lock *, struct cpu_info *); diff --git a/usr.sbin/bgpd/util.c b/usr.sbin/bgpd/util.c index c81d14316..1a99e426f 100644 --- a/usr.sbin/bgpd/util.c +++ b/usr.sbin/bgpd/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.86 2024/05/29 10:34:07 claudio Exp $ */ +/* $OpenBSD: util.c,v 1.87 2024/07/03 08:39:43 job Exp $ */ /* * Copyright (c) 2006 Claudio Jeker @@ -263,7 +263,7 @@ log_aspath_error(int error) switch (error) { case AS_ERR_LEN: - return "inconsitent lenght"; + return "inconsistent length"; case AS_ERR_TYPE: return "unknown segment type"; case AS_ERR_BAD: diff --git a/usr.sbin/radiusd/radiusd.conf.5 b/usr.sbin/radiusd/radiusd.conf.5 index 7f766b785..d4270a97a 100644 --- a/usr.sbin/radiusd/radiusd.conf.5 +++ b/usr.sbin/radiusd/radiusd.conf.5 @@ -1,4 +1,4 @@ -.\" $OpenBSD: radiusd.conf.5,v 1.23 2024/07/02 06:01:22 jmc Exp $ +.\" $OpenBSD: radiusd.conf.5,v 1.24 2024/07/03 06:09:13 yasuoka Exp $ .\" .\" Copyright (c) 2014 Esdenera Networks GmbH .\" Copyright (c) 2014, 2023 Internet Initiative Japan Inc. @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: July 2 2024 $ +.Dd $Mdocdate: July 3 2024 $ .Dt RADIUSD.CONF 5 .Os .Sh NAME @@ -189,6 +189,8 @@ module radius { set server "127.0.0.1" } +module standard + module strip-realm "/usr/libexec/radiusd/radiusd_standard" { set strip-atmark-realm true }