sync with OpenBSD -current
This commit is contained in:
parent
c78abe7784
commit
eb9d621948
270 changed files with 666 additions and 538 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bus_dma.c,v 1.52 2024/08/14 18:31:33 bluhm Exp $ */
|
||||
/* $OpenBSD: bus_dma.c,v 1.53 2024/08/18 21:04:29 bluhm Exp $ */
|
||||
/* $NetBSD: bus_dma.c,v 1.3 2003/05/07 21:33:58 fvdl Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -96,6 +96,11 @@
|
|||
|
||||
#include <uvm/uvm_extern.h>
|
||||
|
||||
/* #define FORCE_BOUNCE_BUFFER 1 */
|
||||
#ifndef FORCE_BOUNCE_BUFFER
|
||||
#define FORCE_BOUNCE_BUFFER 0
|
||||
#endif
|
||||
|
||||
int _bus_dmamap_load_buffer(bus_dma_tag_t, bus_dmamap_t, void *, bus_size_t,
|
||||
struct proc *, int, paddr_t *, int *, int);
|
||||
|
||||
|
@ -115,6 +120,8 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_size_t size, int nsegments,
|
|||
void *mapstore;
|
||||
int npages, error;
|
||||
const struct kmem_dyn_mode *kd;
|
||||
/* allocate and use bounce buffers when running as SEV guest */
|
||||
int use_bounce_buffer = cpu_sev_guestmode || FORCE_BOUNCE_BUFFER;
|
||||
|
||||
/*
|
||||
* Allocate and initialize the DMA map. The end of the map
|
||||
|
@ -131,8 +138,7 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_size_t size, int nsegments,
|
|||
mapsize = sizeof(struct bus_dmamap) +
|
||||
(sizeof(bus_dma_segment_t) * (nsegments - 1));
|
||||
|
||||
/* allocate and use bounce buffers when running as SEV guest */
|
||||
if (cpu_sev_guestmode) {
|
||||
if (use_bounce_buffer) {
|
||||
/* this many pages plus one in case we get split */
|
||||
npages = round_page(size) / PAGE_SIZE + 1;
|
||||
if (npages < nsegments)
|
||||
|
@ -150,13 +156,13 @@ _bus_dmamap_create(bus_dma_tag_t t, bus_size_t size, int nsegments,
|
|||
map->_dm_segcnt = nsegments;
|
||||
map->_dm_maxsegsz = maxsegsz;
|
||||
map->_dm_boundary = boundary;
|
||||
if (cpu_sev_guestmode) {
|
||||
if (use_bounce_buffer) {
|
||||
map->_dm_pages = (void *)&map->dm_segs[nsegments];
|
||||
map->_dm_npages = npages;
|
||||
}
|
||||
map->_dm_flags = flags & ~(BUS_DMA_WAITOK|BUS_DMA_NOWAIT);
|
||||
|
||||
if (!cpu_sev_guestmode) {
|
||||
if (!use_bounce_buffer) {
|
||||
*dmamp = map;
|
||||
return (0);
|
||||
}
|
||||
|
@ -478,8 +484,9 @@ _bus_dmamap_sync(bus_dma_tag_t t, bus_dmamap_t map, bus_addr_t addr,
|
|||
bus_dma_segment_t *sg;
|
||||
int i, off = addr;
|
||||
bus_size_t l;
|
||||
int use_bounce_buffer = cpu_sev_guestmode || FORCE_BOUNCE_BUFFER;
|
||||
|
||||
if (!cpu_sev_guestmode)
|
||||
if (!use_bounce_buffer)
|
||||
return;
|
||||
|
||||
for (i = map->_dm_segcnt, sg = map->dm_segs; size && i--; sg++) {
|
||||
|
@ -685,6 +692,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t t, bus_dmamap_t map, void *buf,
|
|||
int seg, page, off;
|
||||
pmap_t pmap;
|
||||
struct vm_page *pg;
|
||||
int use_bounce_buffer = cpu_sev_guestmode || FORCE_BOUNCE_BUFFER;
|
||||
|
||||
if (p != NULL)
|
||||
pmap = p->p_vmspace->vm_map.pmap;
|
||||
|
@ -705,8 +713,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t t, bus_dmamap_t map, void *buf,
|
|||
panic("Non dma-reachable buffer at curaddr %#lx(raw)",
|
||||
curaddr);
|
||||
|
||||
if (cpu_sev_guestmode) {
|
||||
/* use bounce buffer */
|
||||
if (use_bounce_buffer) {
|
||||
if (map->_dm_nused + 1 >= map->_dm_npages)
|
||||
return (ENOMEM);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cortex.c,v 1.7 2022/03/12 14:40:41 mpi Exp $ */
|
||||
/* $OpenBSD: cortex.c,v 1.8 2024/08/18 15:50:47 deraadt Exp $ */
|
||||
/* $NetBSD: mainbus.c,v 1.3 2001/06/13 17:52:43 nathanw Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -81,8 +81,7 @@ int cortexsearch(struct device *, void *, void *);
|
|||
/* attach and device structures for the device */
|
||||
|
||||
const struct cfattach cortex_ca = {
|
||||
sizeof(struct device), cortexmatch, cortexattach, NULL,
|
||||
config_activate_children
|
||||
sizeof(struct device), cortexmatch, cortexattach
|
||||
};
|
||||
|
||||
struct cfdriver cortex_cd = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: mainbus.c,v 1.24 2022/03/12 14:40:41 mpi Exp $ */
|
||||
/* $OpenBSD: mainbus.c,v 1.25 2024/08/18 15:50:49 deraadt Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2016 Patrick Wildt <patrick@blueri.se>
|
||||
* Copyright (c) 2017 Mark Kettenis <kettenis@openbsd.org>
|
||||
|
@ -51,8 +51,7 @@ struct mainbus_softc {
|
|||
};
|
||||
|
||||
const struct cfattach mainbus_ca = {
|
||||
sizeof(struct mainbus_softc), mainbus_match, mainbus_attach, NULL,
|
||||
config_activate_children
|
||||
sizeof(struct mainbus_softc), mainbus_match, mainbus_attach
|
||||
};
|
||||
|
||||
struct cfdriver mainbus_cd = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: mainbus.c,v 1.29 2024/01/29 14:52:25 kettenis Exp $ */
|
||||
/* $OpenBSD: mainbus.c,v 1.30 2024/08/18 15:50:49 deraadt Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2016 Patrick Wildt <patrick@blueri.se>
|
||||
* Copyright (c) 2017 Mark Kettenis <kettenis@openbsd.org>
|
||||
|
@ -60,8 +60,7 @@ struct mainbus_softc {
|
|||
};
|
||||
|
||||
const struct cfattach mainbus_ca = {
|
||||
sizeof(struct mainbus_softc), mainbus_match, mainbus_attach, NULL,
|
||||
config_activate_children
|
||||
sizeof(struct mainbus_softc), mainbus_match, mainbus_attach
|
||||
};
|
||||
|
||||
struct cfdriver mainbus_cd = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bios.c,v 1.129 2023/03/15 08:20:52 jsg Exp $ */
|
||||
/* $OpenBSD: bios.c,v 1.130 2024/08/18 15:50:49 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997-2001 Michael Shalayeff
|
||||
|
@ -81,8 +81,7 @@ int bios_print(void *, const char *);
|
|||
char *fixstring(char *);
|
||||
|
||||
const struct cfattach bios_ca = {
|
||||
sizeof(struct bios_softc), biosprobe, biosattach, NULL,
|
||||
config_activate_children
|
||||
sizeof(struct bios_softc), biosprobe, biosattach
|
||||
};
|
||||
|
||||
struct cfdriver bios_cd = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: mainbus.c,v 1.61 2023/01/30 10:49:05 jsg Exp $ */
|
||||
/* $OpenBSD: mainbus.c,v 1.62 2024/08/18 15:50:49 deraadt Exp $ */
|
||||
/* $NetBSD: mainbus.c,v 1.21 1997/06/06 23:14:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -84,8 +84,7 @@ int mainbus_match(struct device *, void *, void *);
|
|||
void mainbus_attach(struct device *, struct device *, void *);
|
||||
|
||||
const struct cfattach mainbus_ca = {
|
||||
sizeof(struct device), mainbus_match, mainbus_attach, NULL,
|
||||
config_activate_children
|
||||
sizeof(struct device), mainbus_match, mainbus_attach
|
||||
};
|
||||
|
||||
struct cfdriver mainbus_cd = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue