Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F131786433
D41029.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D41029.diff
View Options
diff --git a/sys/kern/subr_bus_dma.c b/sys/kern/subr_bus_dma.c
--- a/sys/kern/subr_bus_dma.c
+++ b/sys/kern/subr_bus_dma.c
@@ -38,7 +38,6 @@
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/systm.h>
-#include <sys/bio.h>
#include <sys/bus.h>
#include <sys/callout.h>
#include <sys/ktr.h>
@@ -259,29 +258,6 @@
return (error);
}
-/*
- * Load from block io.
- */
-static int
-_bus_dmamap_load_bio(bus_dma_tag_t dmat, bus_dmamap_t map, struct bio *bio,
- int *nsegs, int flags)
-{
-
- if ((bio->bio_flags & BIO_VLIST) != 0) {
- bus_dma_segment_t *segs = (bus_dma_segment_t *)bio->bio_data;
- return (_bus_dmamap_load_vlist(dmat, map, segs, bio->bio_ma_n,
- kernel_pmap, nsegs, flags, bio->bio_ma_offset,
- bio->bio_bcount));
- }
-
- if ((bio->bio_flags & BIO_UNMAPPED) != 0)
- return (_bus_dmamap_load_ma(dmat, map, bio->bio_ma,
- bio->bio_bcount, bio->bio_ma_offset, flags, NULL, nsegs));
-
- return (_bus_dmamap_load_buffer(dmat, map, bio->bio_data,
- bio->bio_bcount, kernel_pmap, flags, NULL, nsegs));
-}
-
int
bus_dmamap_load_ma_triv(bus_dma_tag_t dmat, bus_dmamap_t map,
struct vm_page **ma, bus_size_t tlen, int ma_offs, int flags,
@@ -497,43 +473,11 @@
bus_dmamap_callback_t *callback, void *callback_arg,
int flags)
{
- bus_dma_segment_t *segs;
struct memdesc mem;
- int error;
- int nsegs;
-#ifdef KMSAN
mem = memdesc_bio(bio);
- _bus_dmamap_load_kmsan(dmat, map, &mem);
-#endif
-
- if ((flags & BUS_DMA_NOWAIT) == 0) {
- mem = memdesc_bio(bio);
- _bus_dmamap_waitok(dmat, map, &mem, callback, callback_arg);
- }
- nsegs = -1;
- error = _bus_dmamap_load_bio(dmat, map, bio, &nsegs, flags);
- nsegs++;
-
- CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d",
- __func__, dmat, flags, error, nsegs);
-
- if (error == EINPROGRESS)
- return (error);
-
- segs = _bus_dmamap_complete(dmat, map, NULL, nsegs, error);
- if (error)
- (*callback)(callback_arg, segs, 0, error);
- else
- (*callback)(callback_arg, segs, nsegs, error);
- /*
- * Return ENOMEM to the caller so that it can pass it up the stack.
- * This error only happens when NOWAIT is set, so deferral is disabled.
- */
- if (error == ENOMEM)
- return (error);
-
- return (0);
+ return (bus_dmamap_load_mem(dmat, map, &mem, callback, callback_arg,
+ flags));
}
int
@@ -571,10 +515,6 @@
error = _bus_dmamap_load_plist(dmat, map, mem->u.md_list,
mem->md_nseg, &nsegs, flags);
break;
- case MEMDESC_BIO:
- error = _bus_dmamap_load_bio(dmat, map, mem->u.md_bio,
- &nsegs, flags);
- break;
case MEMDESC_UIO:
error = _bus_dmamap_load_uio(dmat, map, mem->u.md_uio,
&nsegs, flags);
diff --git a/sys/kern/subr_msan.c b/sys/kern/subr_msan.c
--- a/sys/kern/subr_msan.c
+++ b/sys/kern/subr_msan.c
@@ -1508,9 +1508,6 @@
kmsan_check(desc->u.md_vaddr, desc->md_len,
"dmasync");
break;
- case MEMDESC_BIO:
- kmsan_check_bio(desc->u.md_bio, "dmasync");
- break;
case MEMDESC_MBUF:
kmsan_check_mbuf(desc->u.md_mbuf, "dmasync");
break;
@@ -1527,9 +1524,6 @@
kmsan_mark(desc->u.md_vaddr, desc->md_len,
KMSAN_STATE_INITED);
break;
- case MEMDESC_BIO:
- kmsan_mark_bio(desc->u.md_bio, KMSAN_STATE_INITED);
- break;
case MEMDESC_MBUF:
kmsan_mark_mbuf(desc->u.md_mbuf, KMSAN_STATE_INITED);
break;
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -63,6 +63,7 @@
#include <sys/limits.h>
#include <sys/lock.h>
#include <sys/malloc.h>
+#include <sys/memdesc.h>
#include <sys/mount.h>
#include <sys/mutex.h>
#include <sys/kernel.h>
@@ -5233,6 +5234,20 @@
}
}
+struct memdesc
+memdesc_bio(struct bio *bio)
+{
+ if ((bio->bio_flags & BIO_VLIST) != 0)
+ return (memdesc_vlist((struct bus_dma_segment *)bio->bio_data,
+ bio->bio_ma_n));
+
+ if ((bio->bio_flags & BIO_UNMAPPED) != 0)
+ return (memdesc_vmpages(bio->bio_ma, bio->bio_bcount,
+ bio->bio_ma_offset));
+
+ return (memdesc_vaddr(bio->bio_data, bio->bio_bcount));
+}
+
static int buf_pager_relbuf;
SYSCTL_INT(_vfs, OID_AUTO, buf_pager_relbuf, CTLFLAG_RWTUN,
&buf_pager_relbuf, 0,
diff --git a/sys/sys/memdesc.h b/sys/sys/memdesc.h
--- a/sys/sys/memdesc.h
+++ b/sys/sys/memdesc.h
@@ -47,7 +47,6 @@
void *md_vaddr;
vm_paddr_t md_paddr;
struct bus_dma_segment *md_list;
- struct bio *md_bio;
struct uio *md_uio;
struct mbuf *md_mbuf;
struct vm_page **md_ma;
@@ -66,7 +65,6 @@
#define MEMDESC_PADDR 2 /* Contiguous physical address. */
#define MEMDESC_VLIST 3 /* scatter/gather list of kva addresses. */
#define MEMDESC_PLIST 4 /* scatter/gather list of physical addresses. */
-#define MEMDESC_BIO 5 /* Pointer to a bio (block io). */
#define MEMDESC_UIO 6 /* Pointer to a uio (any io). */
#define MEMDESC_MBUF 7 /* Pointer to a mbuf (network io). */
#define MEMDESC_VMPAGES 8 /* Pointer to array of VM pages. */
@@ -119,17 +117,6 @@
return (mem);
}
-static inline struct memdesc
-memdesc_bio(struct bio *bio)
-{
- struct memdesc mem;
-
- mem.u.md_bio = bio;
- mem.md_type = MEMDESC_BIO;
-
- return (mem);
-}
-
static inline struct memdesc
memdesc_uio(struct uio *uio)
{
@@ -165,6 +152,7 @@
return (mem);
}
+struct memdesc memdesc_bio(struct bio *bio);
struct memdesc memdesc_ccb(union ccb *ccb);
#endif /* _SYS_MEMDESC_H_ */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 12, 3:58 AM (8 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23594034
Default Alt Text
D41029.diff (5 KB)
Attached To
Mode
D41029: memdesc: Retire MEMDESC_BIO.
Attached
Detach File
Event Timeline
Log In to Comment