sync with OpenBSD -current

This commit is contained in:
purplerain 2024-10-09 23:34:35 +00:00
parent 855cd93650
commit 1fb3f2c612
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
51 changed files with 673 additions and 500 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ahci_acpi.c,v 1.5 2022/04/06 18:59:27 naddy Exp $ */
/* $OpenBSD: ahci_acpi.c,v 1.6 2024/10/09 00:38:25 jsg Exp $ */
/*
* Copyright (c) 2018 Mark Kettenis
*
@ -40,7 +40,8 @@ int ahci_acpi_match(struct device *, void *, void *);
void ahci_acpi_attach(struct device *, struct device *, void *);
const struct cfattach ahci_acpi_ca = {
sizeof(struct ahci_acpi_softc), ahci_acpi_match, ahci_acpi_attach
sizeof(struct ahci_acpi_softc), ahci_acpi_match, ahci_acpi_attach,
NULL, ahci_activate
};
int

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ehci_acpi.c,v 1.3 2022/06/28 08:15:04 kettenis Exp $ */
/* $OpenBSD: ehci_acpi.c,v 1.4 2024/10/09 00:38:26 jsg Exp $ */
/*
* Copyright (c) 2018 Mark Kettenis
*
@ -47,7 +47,8 @@ int ehci_acpi_match(struct device *, void *, void *);
void ehci_acpi_attach(struct device *, struct device *, void *);
const struct cfattach ehci_acpi_ca = {
sizeof(struct ehci_acpi_softc), ehci_acpi_match, ehci_acpi_attach
sizeof(struct ehci_acpi_softc), ehci_acpi_match, ehci_acpi_attach,
NULL, ehci_activate
};
const char *ehci_hids[] = {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ipmi_acpi.c,v 1.5 2022/04/06 18:59:27 naddy Exp $ */
/* $OpenBSD: ipmi_acpi.c,v 1.6 2024/10/09 00:38:25 jsg Exp $ */
/*
* Copyright (c) 2018 Patrick Wildt <patrick@blueri.se>
*
@ -55,6 +55,7 @@ struct ipmi_acpi_softc {
const struct cfattach ipmi_acpi_ca = {
sizeof(struct ipmi_acpi_softc), ipmi_acpi_match, ipmi_acpi_attach,
NULL, ipmi_activate
};
const char *ipmi_acpi_hids[] = { ACPI_DEV_IPMI, NULL };

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ohci_acpi.c,v 1.2 2022/04/06 18:59:27 naddy Exp $ */
/* $OpenBSD: ohci_acpi.c,v 1.3 2024/10/09 00:38:25 jsg Exp $ */
/*
* Copyright (c) 2018 Mark Kettenis
*
@ -47,7 +47,8 @@ int ohci_acpi_match(struct device *, void *, void *);
void ohci_acpi_attach(struct device *, struct device *, void *);
const struct cfattach ohci_acpi_ca = {
sizeof(struct ohci_acpi_softc), ohci_acpi_match, ohci_acpi_attach
sizeof(struct ohci_acpi_softc), ohci_acpi_match, ohci_acpi_attach,
NULL, ohci_activate
};
void ohci_acpi_attach_deferred(struct device *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: sdhc_acpi.c,v 1.22 2022/10/08 19:46:52 kettenis Exp $ */
/* $OpenBSD: sdhc_acpi.c,v 1.23 2024/10/09 00:38:25 jsg Exp $ */
/*
* Copyright (c) 2016 Mark Kettenis
*
@ -51,7 +51,8 @@ int sdhc_acpi_match(struct device *, void *, void *);
void sdhc_acpi_attach(struct device *, struct device *, void *);
const struct cfattach sdhc_acpi_ca = {
sizeof(struct sdhc_acpi_softc), sdhc_acpi_match, sdhc_acpi_attach
sizeof(struct sdhc_acpi_softc), sdhc_acpi_match, sdhc_acpi_attach,
NULL, sdhc_activate
};
const char *sdhc_hids[] = {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: xhci_acpi.c,v 1.12 2024/06/19 21:31:10 patrick Exp $ */
/* $OpenBSD: xhci_acpi.c,v 1.13 2024/10/09 00:38:26 jsg Exp $ */
/*
* Copyright (c) 2018 Mark Kettenis
*
@ -47,7 +47,8 @@ int xhci_acpi_match(struct device *, void *, void *);
void xhci_acpi_attach(struct device *, struct device *, void *);
const struct cfattach xhci_acpi_ca = {
sizeof(struct xhci_acpi_softc), xhci_acpi_match, xhci_acpi_attach
sizeof(struct xhci_acpi_softc), xhci_acpi_match, xhci_acpi_attach,
NULL, xhci_activate
};
const char *xhci_hids[] = {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ipmi_fdt.c,v 1.2 2022/04/06 18:59:28 naddy Exp $ */
/* $OpenBSD: ipmi_fdt.c,v 1.3 2024/10/09 00:38:26 jsg Exp $ */
/*
* Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
*
@ -31,7 +31,8 @@ int ipmi_fdt_match(struct device *, void *, void *);
void ipmi_fdt_attach(struct device *, struct device *, void *);
const struct cfattach ipmi_fdt_ca = {
sizeof (struct ipmi_softc), ipmi_fdt_match, ipmi_fdt_attach
sizeof (struct ipmi_softc), ipmi_fdt_match, ipmi_fdt_attach,
NULL, ipmi_activate
};
int

View file

@ -1,4 +1,4 @@
/* $OpenBSD: sdhc_fdt.c,v 1.20 2023/04/08 05:40:54 jsg Exp $ */
/* $OpenBSD: sdhc_fdt.c,v 1.21 2024/10/09 00:38:26 jsg Exp $ */
/*
* Copyright (c) 2017 Mark Kettenis
*
@ -111,7 +111,8 @@ int sdhc_fdt_match(struct device *, void *, void *);
void sdhc_fdt_attach(struct device *, struct device *, void *);
const struct cfattach sdhc_fdt_ca = {
sizeof(struct sdhc_fdt_softc), sdhc_fdt_match, sdhc_fdt_attach
sizeof(struct sdhc_fdt_softc), sdhc_fdt_match, sdhc_fdt_attach,
NULL, sdhc_activate
};
int sdhc_fdt_card_detect(struct sdhc_softc *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ipmi_i2c.c,v 1.5 2024/07/22 14:03:22 jsg Exp $ */
/* $OpenBSD: ipmi_i2c.c,v 1.6 2024/10/09 00:38:26 jsg Exp $ */
/*
* Copyright (c) 2019 Mark Kettenis <kettenis@openbsd.org>
*
@ -56,7 +56,8 @@ int ipmi_i2c_match(struct device *, void *, void *);
void ipmi_i2c_attach(struct device *, struct device *, void *);
const struct cfattach ipmi_i2c_ca = {
sizeof(struct ipmi_i2c_softc), ipmi_i2c_match, ipmi_i2c_attach
sizeof(struct ipmi_i2c_softc), ipmi_i2c_match, ipmi_i2c_attach,
NULL, ipmi_activate
};
int ipmi_i2c_get_interface_caps(struct ipmi_i2c_softc *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: nvme.c,v 1.123 2024/09/13 09:57:34 jmatthew Exp $ */
/* $OpenBSD: nvme.c,v 1.124 2024/10/08 19:41:23 kettenis Exp $ */
/*
* Copyright (c) 2014 David Gwynne <dlg@openbsd.org>
@ -1621,7 +1621,7 @@ nvme_dmamem_alloc(struct nvme_softc *sc, size_t size)
goto ndmfree;
if (bus_dmamem_alloc(sc->sc_dmat, size, sc->sc_mps, 0, &ndm->ndm_seg,
1, &nsegs, BUS_DMA_WAITOK | BUS_DMA_ZERO) != 0)
1, &nsegs, BUS_DMA_WAITOK | BUS_DMA_ZERO | BUS_DMA_64BIT) != 0)
goto destroy;
if (bus_dmamem_map(sc->sc_dmat, &ndm->ndm_seg, nsegs, size,

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ehci.c,v 1.220 2024/05/23 03:21:08 jsg Exp $ */
/* $OpenBSD: ehci.c,v 1.221 2024/10/08 19:42:31 kettenis Exp $ */
/* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */
/*
@ -317,6 +317,7 @@ ehci_init(struct ehci_softc *sc)
sc->sc_noport = EHCI_HCS_N_PORTS(sparams);
cparams = EREAD4(sc, EHCI_HCCPARAMS);
DPRINTF(("ehci_init: cparams=0x%x\n", cparams));
sc->sc_bus.dmaflags = EHCI_HCC_64BIT(cparams) ? BUS_DMA_64BIT : 0;
/* MUST clear segment register if 64 bit capable. */
if (EHCI_HCC_64BIT(cparams))

View file

@ -1,4 +1,4 @@
/* $OpenBSD: usb_mem.c,v 1.35 2024/05/23 03:21:09 jsg Exp $ */
/* $OpenBSD: usb_mem.c,v 1.36 2024/10/08 19:42:31 kettenis Exp $ */
/* $NetBSD: usb_mem.c,v 1.26 2003/02/01 06:23:40 thorpej Exp $ */
/*
@ -82,7 +82,7 @@ LIST_HEAD(, usb_frag_dma) usb_frag_freelist =
usbd_status
usb_block_allocmem(bus_dma_tag_t tag, size_t size, size_t align,
struct usb_dma_block **dmap, int coherent)
struct usb_dma_block **dmap, int flags)
{
int error;
struct usb_dma_block *p;
@ -95,7 +95,7 @@ usb_block_allocmem(bus_dma_tag_t tag, size_t size, size_t align,
/* First check the free list. */
for (p = LIST_FIRST(&usb_blk_freelist); p; p = LIST_NEXT(p, next)) {
if (p->tag == tag && p->size >= size && p->align >= align &&
p->coherent == coherent) {
p->flags == flags) {
LIST_REMOVE(p, next);
usb_blk_nfree--;
splx(s);
@ -115,26 +115,25 @@ usb_block_allocmem(bus_dma_tag_t tag, size_t size, size_t align,
p->tag = tag;
p->size = size;
p->align = align;
p->coherent = coherent;
p->flags = flags;
error = bus_dmamem_alloc(tag, p->size, align, 0,
p->segs, nitems(p->segs),
&p->nsegs, BUS_DMA_NOWAIT);
p->segs, nitems(p->segs), &p->nsegs,
BUS_DMA_NOWAIT | (flags & BUS_DMA_64BIT));
if (error)
goto free0;
error = bus_dmamem_map(tag, p->segs, p->nsegs, p->size,
&p->kaddr, BUS_DMA_NOWAIT | (coherent ?
BUS_DMA_COHERENT : 0));
&p->kaddr, BUS_DMA_NOWAIT | (flags & BUS_DMA_COHERENT));
if (error)
goto free1;
error = bus_dmamap_create(tag, p->size, 1, p->size,
0, BUS_DMA_NOWAIT, &p->map);
0, BUS_DMA_NOWAIT | (flags & BUS_DMA_64BIT), &p->map);
if (error)
goto unmap;
error = bus_dmamap_load(tag, p->map, p->kaddr, p->size, NULL,
BUS_DMA_NOWAIT);
BUS_DMA_NOWAIT);
if (error)
goto destroy;
@ -189,18 +188,17 @@ usb_allocmem(struct usbd_bus *bus, size_t size, size_t align, int flags,
usbd_status err;
struct usb_frag_dma *f;
struct usb_dma_block *b;
int coherent;
int i;
int s;
coherent = !!(flags & USB_DMA_COHERENT);
flags = (flags & USB_DMA_COHERENT) ? BUS_DMA_COHERENT : 0;
flags |= bus->dmaflags;
/* If the request is large then just use a full block. */
if (size > USB_MEM_SMALL || align > USB_MEM_SMALL) {
DPRINTFN(1, ("%s: large alloc %d\n", __func__, (int)size));
size = (size + USB_MEM_BLOCK - 1) & ~(USB_MEM_BLOCK - 1);
err = usb_block_allocmem(tag, size, align, &p->block,
coherent);
err = usb_block_allocmem(tag, size, align, &p->block, flags);
if (!err) {
p->block->frags = NULL;
p->offs = 0;
@ -211,12 +209,12 @@ usb_allocmem(struct usbd_bus *bus, size_t size, size_t align, int flags,
s = splusb();
/* Check for free fragments. */
for (f = LIST_FIRST(&usb_frag_freelist); f; f = LIST_NEXT(f, next))
if (f->block->tag == tag && f->block->coherent == coherent)
if (f->block->tag == tag && f->block->flags == flags)
break;
if (f == NULL) {
DPRINTFN(1, ("usb_allocmem: adding fragments\n"));
err = usb_block_allocmem(tag, USB_MEM_BLOCK, USB_MEM_SMALL, &b,
coherent);
flags);
if (err) {
splx(s);
return (err);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: usb_mem.h,v 1.17 2020/03/21 12:08:31 patrick Exp $ */
/* $OpenBSD: usb_mem.h,v 1.18 2024/10/08 19:42:31 kettenis Exp $ */
/* $NetBSD: usb_mem.h,v 1.20 2003/05/03 18:11:42 wiz Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_mem.h,v 1.9 1999/11/17 22:33:47 n_hibma Exp $ */
@ -40,7 +40,7 @@ struct usb_dma_block {
caddr_t kaddr;
bus_dma_segment_t segs[1];
int nsegs;
int coherent;
int flags;
size_t size;
size_t align;
struct usb_frag_dma *frags;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: usbdivar.h,v 1.83 2022/09/04 08:42:39 mglocker Exp $ */
/* $OpenBSD: usbdivar.h,v 1.84 2024/10/08 19:42:31 kettenis Exp $ */
/* $NetBSD: usbdivar.h,v 1.70 2002/07/11 21:14:36 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdivar.h,v 1.11 1999/11/17 22:33:51 n_hibma Exp $ */
@ -135,6 +135,7 @@ struct usbd_bus {
#define USBREV_STR { "unknown", "pre 1.0", "1.0", "1.1", "2.0", "3.0" }
void *soft; /* soft interrupt cookie */
bus_dma_tag_t dmatag; /* DMA tag */
int dmaflags;
};
struct usbd_device {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: xhci.c,v 1.134 2024/08/17 01:55:03 jsg Exp $ */
/* $OpenBSD: xhci.c,v 1.135 2024/10/08 19:42:31 kettenis Exp $ */
/*
* Copyright (c) 2014-2015 Martin Pieuchot
@ -238,12 +238,12 @@ usbd_dma_contig_alloc(struct usbd_bus *bus, struct usbd_dma_info *dma,
dma->size = size;
error = bus_dmamap_create(dma->tag, size, 1, size, boundary,
BUS_DMA_NOWAIT, &dma->map);
BUS_DMA_NOWAIT | bus->dmaflags, &dma->map);
if (error != 0)
return (error);
error = bus_dmamem_alloc(dma->tag, size, alignment, boundary, &dma->seg,
1, &dma->nsegs, BUS_DMA_NOWAIT | BUS_DMA_ZERO);
1, &dma->nsegs, BUS_DMA_NOWAIT | BUS_DMA_ZERO | bus->dmaflags);
if (error != 0)
goto destroy;
@ -329,6 +329,7 @@ xhci_init(struct xhci_softc *sc)
hcr = XREAD4(sc, XHCI_HCCPARAMS);
sc->sc_ctxsize = XHCI_HCC_CSZ(hcr) ? 64 : 32;
sc->sc_bus.dmaflags |= XHCI_HCC_AC64(hcr) ? BUS_DMA_64BIT : 0;
DPRINTF(("%s: %d bytes context\n", DEVNAME(sc), sc->sc_ctxsize));
#ifdef XHCI_DEBUG