From owner-svn-src-head@freebsd.org Mon Jan 11 21:02:32 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 51798A6B1E2; Mon, 11 Jan 2016 21:02:32 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2072F1F28; Mon, 11 Jan 2016 21:02:32 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0BL2ViE096797; Mon, 11 Jan 2016 21:02:31 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0BL2VZA096796; Mon, 11 Jan 2016 21:02:31 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <201601112102.u0BL2VZA096796@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Mon, 11 Jan 2016 21:02:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r293700 - head/sys/dev/xen/blkfront X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jan 2016 21:02:32 -0000 Author: cperciva Date: Mon Jan 11 21:02:30 2016 New Revision: 293700 URL: https://svnweb.freebsd.org/changeset/base/293700 Log: Add two more assertions to catch busdma problems. Each segment provided by busdma to the blkfront driver must be an integer number of sectors, and must be aligned in memory on a "sector" boundary. Having these assertions yesterday would have made finding the bug fixed in r293698 somewhat easier. Modified: head/sys/dev/xen/blkfront/blkfront.c Modified: head/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- head/sys/dev/xen/blkfront/blkfront.c Mon Jan 11 20:55:52 2016 (r293699) +++ head/sys/dev/xen/blkfront/blkfront.c Mon Jan 11 21:02:30 2016 (r293700) @@ -170,6 +170,11 @@ xbd_mksegarray(bus_dma_segment_t *segs, int ref; while (sg < last_block_sg) { + KASSERT(segs->ds_addr % (1 << XBD_SECTOR_SHFT) == 0, + ("XEN disk driver I/O must be sector aligned")); + KASSERT(segs->ds_len % (1 << XBD_SECTOR_SHFT) == 0, + ("XEN disk driver I/Os must be a multiple of " + "the sector length")); buffer_ma = segs->ds_addr; fsect = (buffer_ma & PAGE_MASK) >> XBD_SECTOR_SHFT; lsect = fsect + (segs->ds_len >> XBD_SECTOR_SHFT) - 1;