sync with OpenBSD -current

This commit is contained in:
purplerain 2024-07-03 01:50:11 +00:00
parent e42955765e
commit 0c5463838b
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
28 changed files with 291 additions and 300 deletions

View file

@ -1,20 +1,5 @@
/* $OpenBSD: agp_machdep.c,v 1.14 2015/03/14 03:38:46 jsg Exp $ */
/* $OpenBSD: agp_machdep.c,v 1.17 2024/07/02 04:42:43 jsg Exp $ */
/*
* Copyright (c) 2008 - 2009 Owain G. Ainsworth <oga@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* Copyright (c) 2002 Michael Shalayeff
* All rights reserved.
@ -43,90 +28,11 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/rwlock.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcidevs.h>
#include <uvm/uvm_extern.h>
#include <machine/cpufunc.h>
#include <machine/bus.h>
#include <machine/pmap.h>
void
agp_flush_cache(void)
{
wbinvd();
}
void
agp_flush_cache_range(vaddr_t va, vsize_t sz)
{
pmap_flush_cache(va, sz);
}
struct agp_map {
bus_space_tag_t bst;
bus_space_handle_t bsh;
bus_size_t size;
};
int
agp_init_map(bus_space_tag_t tag, bus_addr_t address, bus_size_t size,
int flags, struct agp_map **mapp)
{
struct agp_map *map;
int err;
map = malloc(sizeof(*map), M_AGP, M_WAITOK | M_CANFAIL);
if (map == NULL)
return (ENOMEM);
map->bst = tag;
map->size = size;
if ((err = bus_space_map(tag, address, size, flags, &map->bsh)) != 0) {
free(map, M_AGP, sizeof(*map));
return (err);
}
*mapp = map;
return (0);
}
void
agp_destroy_map(struct agp_map *map)
{
bus_space_unmap(map->bst, map->bsh, map->size);
free(map, M_AGP, sizeof(*map));
}
int
agp_map_subregion(struct agp_map *map, bus_size_t offset, bus_size_t size,
bus_space_handle_t *bshp)
{
return (bus_space_subregion(map->bst, map->bsh, offset, size, bshp));
}
void
agp_unmap_subregion(struct agp_map *map, bus_space_handle_t bsh,
bus_size_t size)
{
/* subregion doesn't need unmapping, do nothing */
}
void
agp_map_atomic(struct agp_map *map, bus_size_t offset,
bus_space_handle_t *bshp)
{
agp_map_subregion(map, offset, PAGE_SIZE, bshp);
}
void
agp_unmap_atomic(struct agp_map *map, bus_space_handle_t bsh)
{
/* subregion doesn't need unmapping, do nothing */
}

View file

@ -1,4 +1,4 @@
/* $OpenBSD: cpu.c,v 1.121 2024/06/23 10:17:16 kettenis Exp $ */
/* $OpenBSD: cpu.c,v 1.123 2024/07/02 19:59:54 kettenis Exp $ */
/*
* Copyright (c) 2016 Dale Rahn <drahn@dalerahn.com>
@ -244,6 +244,7 @@ uint64_t cpu_id_aa64isar2;
uint64_t cpu_id_aa64pfr0;
uint64_t cpu_id_aa64pfr1;
int arm64_has_lse;
#ifdef CRYPTO
int arm64_has_aes;
#endif
@ -714,6 +715,7 @@ cpu_identify(struct cpu_info *ci)
if (ID_AA64ISAR0_ATOMIC(id) >= ID_AA64ISAR0_ATOMIC_IMPL) {
printf("%sAtomic", sep);
sep = ",";
arm64_has_lse = 1;
}
if (ID_AA64ISAR0_CRC32(id) >= ID_AA64ISAR0_CRC32_BASE) {
@ -2003,7 +2005,7 @@ cpu_psci_init(struct cpu_info *ci)
*/
len = OF_getproplen(node, "domain-idle-states");
if (len < sizeof(uint32_t))
if (len < (int)sizeof(uint32_t))
return;
states = malloc(len, M_TEMP, M_WAITOK);

170
sys/arch/arm64/arm64/lse.S Normal file
View file

@ -0,0 +1,170 @@
/* $OpenBSD: lse.S,v 1.1 2024/07/02 10:25:16 kettenis Exp $ */
/*
* Copyright (c) 2024 Mark Kettenis <kettenis@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <machine/asm.h>
/*
* Out-of-line LSE atomics helpers
*/
.arch armv8-a+lse
ENTRY(__aarch64_cas4_acq_rel)
RETGUARD_SETUP(__aarch64_cas4_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
casal w0, w1, [x2]
RETGUARD_CHECK(__aarch64_cas4_acq_rel, x15)
ret
1:
ldaxr w9, [x2]
cmp w9, w0
b.ne 2f
stlxr w10, w1, [x2]
cbnz w10, 1b
2:
mov w0, w9
RETGUARD_CHECK(__aarch64_cas4_acq_rel, x15)
ret
END(__aarch64_cas4_acq_rel)
ENTRY(__aarch64_cas8_acq_rel)
RETGUARD_SETUP(__aarch64_cas8_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
casal x0, x1, [x2]
RETGUARD_CHECK(__aarch64_cas8_acq_rel, x15)
ret
1:
ldaxr x9, [x2]
cmp x9, x0
b.ne 2f
stlxr w10, x1, [x2]
cbnz w10, 1b
2:
mov x0, x9
RETGUARD_CHECK(__aarch64_cas8_acq_rel, x15)
ret
END(__aarch64_cas8_acq_rel)
ENTRY(__aarch64_ldadd4_acq_rel)
RETGUARD_SETUP(__aarch64_ldadd4_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
ldaddal w0, w0, [x1]
RETGUARD_CHECK(__aarch64_ldadd4_acq_rel, x15)
ret
1:
ldaxr w9, [x1]
add w11, w9, w0
stlxr w10, w11, [x1]
cbnz w10, 1b
mov w0, w9
RETGUARD_CHECK(__aarch64_ldadd4_acq_rel, x15)
ret
END(__aarch64_ldadd4_acq_rel)
ENTRY(__aarch64_ldadd8_acq_rel)
RETGUARD_SETUP(__aarch64_ldadd8_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
ldaddal x0, x0, [x1]
RETGUARD_CHECK(__aarch64_ldadd8_acq_rel, x15)
ret
1:
ldaxr x9, [x1]
add x11, x9, x0
stlxr w10, x11, [x1]
cbnz w10, 1b
mov x0, x9
RETGUARD_CHECK(__aarch64_ldadd8_acq_rel, x15)
ret
END(__aarch64_ldadd8_acq_rel)
ENTRY(__aarch64_ldclr4_acq_rel)
RETGUARD_SETUP(__aarch64_ldclr4_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
ldclral w0, w0, [x1]
RETGUARD_CHECK(__aarch64_ldclr4_acq_rel, x15)
ret
1:
ldaxr w9, [x1]
bic w11, w9, w0
stlxr w10, w11, [x1]
cbnz w10, 1b
mov w0, w9
RETGUARD_CHECK(__aarch64_ldclr4_acq_rel, x15)
ret
END(__aarch64_ldclr4_acq_rel)
ENTRY(__aarch64_ldset4_acq_rel)
RETGUARD_SETUP(__aarch64_ldset4_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
ldsetal w0, w0, [x1]
RETGUARD_CHECK(__aarch64_ldset4_acq_rel, x15)
ret
1:
ldaxr w9, [x1]
orr w11, w9, w0
stlxr w10, w11, [x1]
cbnz w10, 1b
mov w0, w9
RETGUARD_CHECK(__aarch64_ldset4_acq_rel, x15)
ret
END(__aarch64_ldset4_acq_rel)
ENTRY(__aarch64_swp4_acq_rel)
RETGUARD_SETUP(__aarch64_swp4_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
swpal w0, w0, [x1]
RETGUARD_CHECK(__aarch64_swp4_acq_rel, x15)
ret
1:
ldaxr w9, [x1]
stlxr w10, w0, [x1]
cbnz w10, 1b
mov w0, w9
RETGUARD_CHECK(__aarch64_swp4_acq_rel, x15)
ret
END(__aarch64_swp4_acq_rel)
ENTRY(__aarch64_swp8_acq_rel)
RETGUARD_SETUP(__aarch64_swp8_acq_rel, x15)
adrp x9, arm64_has_lse
ldr w9, [x9, :lo12:arm64_has_lse]
cbz w9, 1f
swpal x0, x0, [x1]
RETGUARD_CHECK(__aarch64_swp8_acq_rel, x15)
ret
1:
ldaxr x9, [x1]
stlxr w10, x0, [x1]
cbnz w10, 1b
mov x0, x9
RETGUARD_CHECK(__aarch64_swp8_acq_rel, x15)
ret
END(__aarch64_swp8_acq_rel)

View file

@ -1,4 +1,4 @@
# $OpenBSD: Makefile.arm64,v 1.47 2023/09/06 01:47:36 jsg Exp $
# $OpenBSD: Makefile.arm64,v 1.48 2024/07/02 10:25:16 kettenis Exp $
# For instructions on building kernels consult the config(8) and options(4)
# manual pages.
@ -60,6 +60,7 @@ CMACHFLAGS= -march=armv8-a+nofp+nosimd \
-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer \
-ffixed-x18
CMACHFLAGS+= -ffreestanding ${NOPIE_FLAGS}
CMACHFLAGS+= -moutline-atomics
SORTR= sort -R
.if ${IDENT:M-DNO_PROPOLICE}
CMACHFLAGS+= -fno-stack-protector

View file

@ -1,4 +1,4 @@
# $OpenBSD: files.arm64,v 1.69 2024/03/25 17:24:03 patrick Exp $
# $OpenBSD: files.arm64,v 1.70 2024/07/02 10:25:16 kettenis Exp $
maxpartitions 16
maxusers 2 8 128
@ -34,6 +34,7 @@ file arch/arm64/arm64/trap.c
file arch/arm64/arm64/ast.c
file arch/arm64/arm64/cpufunc_asm.S
file arch/arm64/arm64/lse.S
file arch/arm64/arm64/support.S
file arch/arm64/arm64/bus_dma.c

View file

@ -1,4 +1,4 @@
/* $OpenBSD: smmu_fdt.c,v 1.6 2022/11/06 12:14:52 patrick Exp $ */
/* $OpenBSD: smmu_fdt.c,v 1.7 2024/07/02 19:41:52 patrick Exp $ */
/*
* Copyright (c) 2021 Patrick Wildt <patrick@blueri.se>
*
@ -83,7 +83,8 @@ smmu_fdt_attach(struct device *parent, struct device *self, void *aux)
sc->sc_is_mmu500 = 1;
if (OF_is_compatible(faa->fa_node, "marvell,ap806-smmu-500"))
sc->sc_is_ap806 = 1;
if (OF_is_compatible(faa->fa_node, "qcom,sc8280xp-smmu-500"))
if (OF_is_compatible(faa->fa_node, "qcom,sc8280xp-smmu-500") ||
OF_is_compatible(faa->fa_node, "qcom,x1e80100-smmu-500"))
sc->sc_is_qcom = 1;
if (OF_getproplen(faa->fa_node, "dma-coherent") == 0)
sc->sc_coherent = 1;

View file

@ -1,20 +1,5 @@
/* $OpenBSD: agp_machdep.c,v 1.21 2023/01/30 10:49:05 jsg Exp $ */
/* $OpenBSD: agp_machdep.c,v 1.24 2024/07/02 04:42:43 jsg Exp $ */
/*
* Copyright (c) 2008 - 2009 Owain G. Ainsworth <oga@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* Copyright (c) 2002 Michael Shalayeff
* All rights reserved.
@ -43,129 +28,11 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/agpvar.h>
#include <uvm/uvm_extern.h>
#include <machine/cpufunc.h>
#include <machine/bus.h>
#include <machine/pmap.h>
void
agp_flush_cache(void)
{
wbinvd();
}
void
agp_flush_cache_range(vaddr_t va, vsize_t sz)
{
pmap_flush_cache(va, sz);
}
struct agp_map {
bus_space_tag_t bst;
bus_addr_t addr;
bus_size_t size;
int flags;
vaddr_t va;
};
extern struct extent *iomem_ex;
int
agp_init_map(bus_space_tag_t tag, bus_addr_t address, bus_size_t size,
int flags, struct agp_map **mapp)
{
struct agp_map *map;
int error;
KASSERT(tag == I386_BUS_SPACE_MEM);
/*
* We grab the extent out of the bus region ourselves
* so we don't need to do these allocations every time.
*/
error = extent_alloc_region(iomem_ex, address, size,
EX_NOWAIT | EX_MALLOCOK);
if (error)
return (error);
map = malloc(sizeof(*map), M_AGP, M_WAITOK | M_CANFAIL);
if (map == NULL)
return (ENOMEM);
map->bst = tag;
map->addr = address;
map->size = size;
map->flags = flags;
map->va = (vaddr_t)km_alloc(PAGE_SIZE, &kv_any, &kp_none, &kd_waitok);
if (map->va == 0) {
free(map, M_AGP, sizeof(*map));
return (ENOMEM);
}
*mapp = map;
return (0);
}
void
agp_destroy_map(struct agp_map *map)
{
if (extent_free(iomem_ex, map->addr, map->size,
EX_NOWAIT | EX_MALLOCOK ))
printf("%s: can't free region\n",__func__);
km_free((void *)map->va, PAGE_SIZE, &kv_any, &kp_none);
free(map, M_AGP, sizeof(*map));
}
int
agp_map_subregion(struct agp_map *map, bus_size_t offset, bus_size_t size,
bus_space_handle_t *bshp)
{
return (_bus_space_map(map->bst, map->addr + offset, size,
map->flags, bshp));
}
void
agp_unmap_subregion(struct agp_map *map, bus_space_handle_t bsh,
bus_size_t size)
{
return (_bus_space_unmap(map->bst, bsh, size, NULL));
}
void
agp_map_atomic(struct agp_map *map, bus_size_t offset,
bus_space_handle_t *bshp)
{
int pmap_flags = PMAP_NOCACHE;
paddr_t pa;
KASSERT((offset & PGOFSET) == 0);
if (map->flags & BUS_SPACE_MAP_CACHEABLE)
pmap_flags = 0;
else if (map->flags & BUS_SPACE_MAP_PREFETCHABLE)
pmap_flags = PMAP_WC;
pa = bus_space_mmap(map->bst, map->addr, offset, 0, 0);
pmap_kenter_pa(map->va, pa | pmap_flags, PROT_READ | PROT_WRITE);
pmap_update(pmap_kernel());
*bshp = (bus_space_handle_t)map->va;
}
void
agp_unmap_atomic(struct agp_map *map, bus_space_handle_t bsh)
{
KASSERT(bsh == (bus_space_handle_t)map->va);
pmap_kremove(map->va, PAGE_SIZE);
pmap_update(pmap_kernel());
}

View file

@ -1,4 +1,4 @@
/* $OpenBSD: acpi.c,v 1.432 2024/06/25 11:57:10 kettenis Exp $ */
/* $OpenBSD: acpi.c,v 1.433 2024/07/02 08:27:04 kettenis Exp $ */
/*
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
@ -2203,6 +2203,7 @@ acpi_add_device(struct aml_node *node, void *arg)
CPU_INFO_ITERATOR cii;
struct cpu_info *ci;
int proc_id = -1;
int64_t sta;
memset(&aaa, 0, sizeof(aaa));
aaa.aaa_node = node;
@ -2233,6 +2234,10 @@ acpi_add_device(struct aml_node *node, void *arg)
aaa.aaa_name = "acpicpu";
break;
case AML_OBJTYPE_THERMZONE:
sta = acpi_getsta(sc, node);
if ((sta & STA_PRESENT) == 0)
return 0;
aaa.aaa_name = "acpitz";
break;
case AML_OBJTYPE_POWERRSRC:

View file

@ -1,4 +1,4 @@
/* $OpenBSD: dwpcie.c,v 1.53 2024/03/29 12:45:13 kettenis Exp $ */
/* $OpenBSD: dwpcie.c,v 1.54 2024/07/02 19:44:37 patrick Exp $ */
/*
* Copyright (c) 2018 Mark Kettenis <kettenis@openbsd.org>
*
@ -314,6 +314,7 @@ dwpcie_match(struct device *parent, void *match, void *aux)
OF_is_compatible(faa->fa_node, "fsl,imx8mq-pcie") ||
OF_is_compatible(faa->fa_node, "marvell,armada8k-pcie") ||
OF_is_compatible(faa->fa_node, "qcom,pcie-sc8280xp") ||
OF_is_compatible(faa->fa_node, "qcom,pcie-x1e80100") ||
OF_is_compatible(faa->fa_node, "rockchip,rk3568-pcie") ||
OF_is_compatible(faa->fa_node, "rockchip,rk3588-pcie") ||
OF_is_compatible(faa->fa_node, "sifive,fu740-pcie"));
@ -533,7 +534,8 @@ dwpcie_attach_deferred(struct device *self)
if (OF_is_compatible(sc->sc_node, "fsl,imx8mm-pcie") ||
OF_is_compatible(sc->sc_node, "fsl,imx8mq-pcie"))
error = dwpcie_imx8mq_init(sc);
if (OF_is_compatible(sc->sc_node, "qcom,pcie-sc8280xp"))
if (OF_is_compatible(sc->sc_node, "qcom,pcie-sc8280xp") ||
OF_is_compatible(sc->sc_node, "qcom,pcie-x1e80100"))
error = dwpcie_sc8280xp_init(sc);
if (OF_is_compatible(sc->sc_node, "rockchip,rk3568-pcie") ||
OF_is_compatible(sc->sc_node, "rockchip,rk3588-pcie"))

View file

@ -1,4 +1,4 @@
/* $OpenBSD: qcgpio_fdt.c,v 1.3 2024/05/13 01:15:50 jsg Exp $ */
/* $OpenBSD: qcgpio_fdt.c,v 1.4 2024/07/02 19:43:52 patrick Exp $ */
/*
* Copyright (c) 2022 Mark Kettenis <kettenis@openbsd.org>
*
@ -100,7 +100,8 @@ qcgpio_fdt_match(struct device *parent, void *match, void *aux)
{
struct fdt_attach_args *faa = aux;
return OF_is_compatible(faa->fa_node, "qcom,sc8280xp-tlmm");
return (OF_is_compatible(faa->fa_node, "qcom,sc8280xp-tlmm") ||
OF_is_compatible(faa->fa_node, "qcom,x1e80100-tlmm"));
}
void
@ -116,7 +117,10 @@ qcgpio_fdt_attach(struct device *parent, struct device *self, void *aux)
return;
}
sc->sc_npins = 230;
if (OF_is_compatible(faa->fa_node, "qcom,sc8280xp-tlmm"))
sc->sc_npins = 230;
else
sc->sc_npins = 239;
sc->sc_pin_ih = mallocarray(sc->sc_npins, sizeof(*sc->sc_pin_ih),
M_DEVBUF, M_WAITOK | M_ZERO);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: hidkbd.c,v 1.12 2024/01/03 21:41:44 tobhe Exp $ */
/* $OpenBSD: hidkbd.c,v 1.13 2024/07/02 05:50:02 gkoehler Exp $ */
/* $NetBSD: ukbd.c,v 1.85 2003/03/11 16:44:00 augustss Exp $ */
/*
@ -141,9 +141,26 @@ static const struct hidkbd_translation apple_fn_trans[] = {
{ 60, 127 }, /* F3 -> audio mute */
{ 61, 129 }, /* F4 -> audio lower */
{ 62, 128 }, /* F5 -> audio raise */
{ 63, 83 }, /* F6 -> num lock */
{ 65, 234 }, /* F8 -> backlight toggle */
{ 66, 236 }, /* F9 -> backlight lower */
{ 67, 235 }, /* F10 -> backlight raise */
{ 39, 84 }, /* keypad divide */
{ 19, 85 }, /* keypad multiply */
{ 51, 86 }, /* keypad substract */
{ 56, 87 }, /* keypad add */
{ 13, 89 }, /* keypad 1 */
{ 14, 90 }, /* keypad 2 */
{ 15, 91 }, /* keypad 3 */
{ 24, 92 }, /* keypad 4 */
{ 12, 93 }, /* keypad 5 */
{ 18, 94 }, /* keypad 6 */
{ 36, 95 }, /* keypad 7 */
{ 37, 96 }, /* keypad 8 */
{ 38, 97 }, /* keypad 9 */
{ 16, 98 }, /* keypad 0 */
{ 55, 99 }, /* keypad decimal */
{ 45, 103 }, /* keypad equal */
#else
{ 63, 102 }, /* F6 -> sleep */
{ 67, 127 }, /* F10 -> audio mute */

View file

@ -1,4 +1,4 @@
/* $OpenBSD: agpvar.h,v 1.35 2024/05/13 01:15:51 jsg Exp $ */
/* $OpenBSD: agpvar.h,v 1.37 2024/07/02 04:29:01 jsg Exp $ */
/* $NetBSD: agpvar.h,v 1.4 2001/10/01 21:54:48 fvdl Exp $ */
/*-
@ -122,8 +122,6 @@ struct agp_gatt {
size_t ag_size;
};
struct agp_map;
/*
* Functions private to the AGP code.
*/
@ -134,17 +132,7 @@ struct agp_gatt *
agp_alloc_gatt(bus_dma_tag_t, u_int32_t);
void agp_free_gatt(bus_dma_tag_t, struct agp_gatt *);
void agp_flush_cache(void);
void agp_flush_cache_range(vaddr_t, vsize_t);
int agp_generic_enable(struct agp_softc *, u_int32_t);
int agp_init_map(bus_space_tag_t, bus_addr_t, bus_size_t, int, struct
agp_map **);
void agp_destroy_map(struct agp_map *);
int agp_map_subregion(struct agp_map *, bus_size_t, bus_size_t,
bus_space_handle_t *);
void agp_unmap_subregion(struct agp_map *, bus_space_handle_t,
bus_size_t);
void agp_map_atomic(struct agp_map *, bus_size_t, bus_space_handle_t *);
void agp_unmap_atomic(struct agp_map *, bus_space_handle_t);
int agp_alloc_dmamem(bus_dma_tag_t, size_t, bus_dmamap_t *,
bus_addr_t *, bus_dma_segment_t *);

View file

@ -1,4 +1,4 @@
$OpenBSD: pcidevs,v 1.2078 2024/06/30 08:11:36 kevlo Exp $
$OpenBSD: pcidevs,v 1.2079 2024/07/02 22:28:02 kettenis Exp $
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
/*
@ -8628,6 +8628,7 @@ product QLOGIC ISP8432 0x8432 ISP8432
/* Qualcomm products */
product QUALCOMM SC8280XP_PCIE 0x010e SC8280XP PCIe
product QUALCOMM X1E80100_PCIE 0x0111 X1E80100 PCIe
product QUALCOMM QCNFA765 0x1103 QCNFA765
/* Quancom products */

View file

@ -2,7 +2,7 @@
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
* OpenBSD: pcidevs,v 1.2078 2024/06/30 08:11:36 kevlo Exp
* OpenBSD: pcidevs,v 1.2079 2024/07/02 22:28:02 kettenis Exp
*/
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
@ -8633,6 +8633,7 @@
/* Qualcomm products */
#define PCI_PRODUCT_QUALCOMM_SC8280XP_PCIE 0x010e /* SC8280XP PCIe */
#define PCI_PRODUCT_QUALCOMM_X1E80100_PCIE 0x0111 /* X1E80100 PCIe */
#define PCI_PRODUCT_QUALCOMM_QCNFA765 0x1103 /* QCNFA765 */
/* Quancom products */

View file

@ -2,7 +2,7 @@
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
* OpenBSD: pcidevs,v 1.2078 2024/06/30 08:11:36 kevlo Exp
* OpenBSD: pcidevs,v 1.2079 2024/07/02 22:28:02 kettenis Exp
*/
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
@ -31139,6 +31139,10 @@ static const struct pci_known_product pci_known_products[] = {
PCI_VENDOR_QUALCOMM, PCI_PRODUCT_QUALCOMM_SC8280XP_PCIE,
"SC8280XP PCIe",
},
{
PCI_VENDOR_QUALCOMM, PCI_PRODUCT_QUALCOMM_X1E80100_PCIE,
"X1E80100 PCIe",
},
{
PCI_VENDOR_QUALCOMM, PCI_PRODUCT_QUALCOMM_QCNFA765,
"QCNFA765",

View file

@ -1,4 +1,4 @@
/* $OpenBSD: pf.c,v 1.1199 2024/06/21 12:51:29 sashan Exp $ */
/* $OpenBSD: pf.c,v 1.1200 2024/07/02 18:33:47 bluhm Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@ -7958,20 +7958,26 @@ done:
case PF_AFRT:
if (pf_translate_af(&pd)) {
action = PF_DROP;
break;
goto out;
}
pd.m->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
switch (pd.naf) {
case AF_INET:
if (pd.dir == PF_IN) {
int flags;
int flags = IP_REDIRECT;
if (ip_forwarding == 0) {
switch (ip_forwarding) {
case 2:
SET(flags, IP_FORWARDING_IPSEC);
/* FALLTHROUGH */
case 1:
SET(flags, IP_FORWARDING);
break;
default:
ipstat_inc(ips_cantforward);
action = PF_DROP;
break;
goto out;
}
flags = IP_FORWARDING | IP_REDIRECT;
if (ip_directedbcast)
SET(flags, IP_ALLOWBROADCAST);
ip_forward(pd.m, ifp, NULL, flags);
@ -7985,7 +7991,7 @@ done:
if (ip6_forwarding == 0) {
ip6stat_inc(ip6s_cantforward);
action = PF_DROP;
break;
goto out;
}
flags = IPV6_FORWARDING | IPV6_REDIRECT;
ip6_forward(pd.m, NULL, flags);
@ -7993,10 +7999,8 @@ done:
ip6_output(pd.m, NULL, NULL, 0, NULL, NULL);
break;
}
if (action != PF_DROP) {
pd.m = NULL;
action = PF_PASS;
}
pd.m = NULL;
action = PF_PASS;
break;
#endif /* INET6 */
case PF_DROP:
@ -8036,6 +8040,7 @@ done:
st->if_index_out = ifp->if_index;
}
out:
*m0 = pd.m;
pf_state_unref(st);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip_input.c,v 1.396 2024/06/24 12:19:19 bluhm Exp $ */
/* $OpenBSD: ip_input.c,v 1.397 2024/07/02 18:33:47 bluhm Exp $ */
/* $NetBSD: ip_input.c,v 1.30 1996/03/16 23:53:58 christos Exp $ */
/*
@ -465,8 +465,14 @@ ip_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
SET(flags, IP_REDIRECT);
#endif
if (ip_forwarding != 0)
switch (ip_forwarding) {
case 2:
SET(flags, IP_FORWARDING_IPSEC);
/* FALLTHROUGH */
case 1:
SET(flags, IP_FORWARDING);
break;
}
if (ip_directedbcast)
SET(flags, IP_ALLOWBROADCAST);
@ -529,7 +535,7 @@ ip_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
* ip_output().)
*/
KERNEL_LOCK();
error = ip_mforward(m, ifp);
error = ip_mforward(m, ifp, flags);
KERNEL_UNLOCK();
if (error) {
ipstat_inc(ips_cantforward);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip_mroute.c,v 1.142 2024/04/06 14:23:27 bluhm Exp $ */
/* $OpenBSD: ip_mroute.c,v 1.143 2024/07/02 18:33:47 bluhm Exp $ */
/* $NetBSD: ip_mroute.c,v 1.85 2004/04/26 01:31:57 matt Exp $ */
/*
@ -122,7 +122,7 @@ int get_api_support(struct mbuf *);
int get_api_config(struct mbuf *);
int socket_send(struct socket *, struct mbuf *,
struct sockaddr_in *);
int ip_mdq(struct mbuf *, struct ifnet *, struct rtentry *);
int ip_mdq(struct mbuf *, struct ifnet *, struct rtentry *, int);
struct ifnet *if_lookupbyvif(vifi_t, unsigned int);
struct rtentry *rt_mcast_add(struct ifnet *, struct sockaddr *,
struct sockaddr *);
@ -1080,7 +1080,7 @@ socket_send(struct socket *so, struct mbuf *mm, struct sockaddr_in *src)
#define TUNNEL_LEN 12 /* # bytes of IP option for tunnel encapsulation */
int
ip_mforward(struct mbuf *m, struct ifnet *ifp)
ip_mforward(struct mbuf *m, struct ifnet *ifp, int flags)
{
struct ip *ip = mtod(m, struct ip *);
struct vif *v;
@ -1121,7 +1121,7 @@ ip_mforward(struct mbuf *m, struct ifnet *ifp)
/* Entry exists, so forward if necessary */
if (rt != NULL) {
return (ip_mdq(m, ifp, rt));
return (ip_mdq(m, ifp, rt, flags));
} else {
/*
* If we don't have a route for packet's origin,
@ -1183,7 +1183,7 @@ ip_mforward(struct mbuf *m, struct ifnet *ifp)
* Packet forwarding routine once entry in the cache is made
*/
int
ip_mdq(struct mbuf *m, struct ifnet *ifp0, struct rtentry *rt)
ip_mdq(struct mbuf *m, struct ifnet *ifp0, struct rtentry *rt, int flags)
{
struct ip *ip = mtod(m, struct ip *);
struct mfc *mfc = (struct mfc *)rt->rt_llinfo;
@ -1281,7 +1281,7 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp0, struct rtentry *rt)
imo.imo_ttl = ip->ip_ttl - IPTTLDEC;
imo.imo_loop = 1;
ip_output(mc, NULL, NULL, IP_FORWARDING, &imo, NULL, 0);
ip_output(mc, NULL, NULL, flags | IP_FORWARDING, &imo, NULL, 0);
if_put(ifp);
} while ((rt = rtable_iterate(rt)) != NULL);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip_output.c,v 1.400 2024/06/07 18:24:16 bluhm Exp $ */
/* $OpenBSD: ip_output.c,v 1.401 2024/07/02 18:33:47 bluhm Exp $ */
/* $NetBSD: ip_output.c,v 1.28 1996/02/13 23:43:07 christos Exp $ */
/*
@ -331,7 +331,7 @@ reroute:
int rv;
KERNEL_LOCK();
rv = ip_mforward(m, ifp);
rv = ip_mforward(m, ifp, flags);
KERNEL_UNLOCK();
if (rv != 0)
goto bad;
@ -428,9 +428,8 @@ sendit:
#endif
#ifdef IPSEC
if ((flags & IP_FORWARDING) && ip_forwarding == 2 &&
(!ipsec_in_use ||
m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE, NULL) == NULL)) {
if (ISSET(flags, IP_FORWARDING) && ISSET(flags, IP_FORWARDING_IPSEC) &&
!ISSET(m->m_pkthdr.ph_tagsset, PACKET_TAG_IPSEC_IN_DONE)) {
error = EHOSTUNREACH;
goto bad;
}

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip_var.h,v 1.118 2024/06/07 18:24:16 bluhm Exp $ */
/* $OpenBSD: ip_var.h,v 1.119 2024/07/02 18:33:47 bluhm Exp $ */
/* $NetBSD: ip_var.h,v 1.16 1996/02/13 23:43:20 christos Exp $ */
/*
@ -207,6 +207,7 @@ struct ipoffnxt {
#define IP_FORWARDING 0x0001 /* most of ip header exists */
#define IP_RAWOUTPUT 0x0002 /* raw ip header exists */
#define IP_REDIRECT 0x0004 /* redirected by pf or source route */
#define IP_FORWARDING_IPSEC 0x0008 /* only packets processed by IPsec */
#define IP_ALLOWBROADCAST SO_BROADCAST /* can send broadcast packets */
#define IP_MTUDISC 0x0800 /* pmtu discovery, set DF */
@ -246,7 +247,7 @@ int ip_getmoptions(int, struct ip_moptions *, struct mbuf *);
void ip_init(void);
struct mbuf*
ip_insertoptions(struct mbuf *, struct mbuf *, int *);
int ip_mforward(struct mbuf *, struct ifnet *);
int ip_mforward(struct mbuf *, struct ifnet *, int);
int ip_optcopy(struct ip *, struct ip *);
int ip_output(struct mbuf *, struct mbuf *, struct route *, int,
struct ip_moptions *, const struct ipsec_level *, u_int32_t);