From: miod Date: Sat, 3 Jan 2015 20:44:23 +0000 (+0000) Subject: Some bowels of the bus_dma code assume it is ok to perform bitwise operations X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=ac7be579d92df6d99ac28b2d6c57a29ca0449be9;p=openbsd Some bowels of the bus_dma code assume it is ok to perform bitwise operations with the base address of the window, which only works if its size is smaller than the address it begins at. Until these assumptions are carefully fixed, revert r1.9, and go back to using only one direct map window. --- diff --git a/sys/arch/alpha/pci/tsp_dma.c b/sys/arch/alpha/pci/tsp_dma.c index 819a3c710ee..15387376ef0 100644 --- a/sys/arch/alpha/pci/tsp_dma.c +++ b/sys/arch/alpha/pci/tsp_dma.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tsp_dma.c,v 1.11 2014/06/14 23:11:20 jmatthew Exp $ */ +/* $OpenBSD: tsp_dma.c,v 1.12 2015/01/03 20:44:23 miod Exp $ */ /* $NetBSD: tsp_dma.c,v 1.1 1999/06/29 06:46:47 ross Exp $ */ /*- @@ -112,8 +112,7 @@ tsp_dma_init(struct device *tsp, struct tsp_config *pcp) { 0x00800000, 0x00700000, 0x00000000, WSBA_ENA | WSBA_SG }, /* 0-1GB at 2GB direct */ { 0x80000000, 0x3ff00000, 0x00000000, WSBA_ENA }, - /* 1-2GB at 3GB direct */ - { 0xC0000000, 0x3ff00000, 0x40000000, WSBA_ENA }, + { 0, 0, 0 }, { 0, 0, 0 } }; @@ -144,11 +143,7 @@ tsp_dma_init(struct device *tsp, struct tsp_config *pcp) t = &pcp->pc_dmat_direct; t->_cookie = pcp; t->_wbase = dwbase = WSBA_ADDR(pccsr->tsp_wsba[1].tsg_r); - t->_wsize = dwlen = WSM_LEN(pccsr->tsp_wsm[1].tsg_r) + - WSM_LEN(pccsr->tsp_wsm[2].tsg_r); - KDASSERT(WSBA_ADDR(pccsr->tsp_wsba[2].tsg_r) == - WSBA_ADDR(pccsr->tsp_wsba[1].tsg_r) + - WSM_LEN(pccsr->tsp_wsm[1].tsg_r)); + t->_wsize = dwlen = WSM_LEN(pccsr->tsp_wsm[1].tsg_r); t->_next_window = &pcp->pc_dmat_sgmap; t->_boundary = 0; t->_sgmap = NULL;