Muli Ben-Yehuda
2005-Dec-17 14:35 UTC
[Xen-devel] Re: [Xen-changelog] Work aroudn swiotlb issue where a read-only host buffer is
On Sat, Dec 17, 2005 at 12:28:06PM +0000, Xen patchbot -unstable wrote:> # HG changeset patch > # User kaf24@firebug.cl.cam.ac.uk > # Node ID b92ca87a2403d465e4d1087f8a7a43223b21bed8 > # Parent 1509521c824efbae25bb953a2e2a49ab3f7fe7f4 > Work aroudn swiotlb issue where a read-only host buffer is > mapped for DMA_BIDIRECTIONAL streaming access by certain > low-level drivers. This causes an unnecessary copy to the > host buffer that previously caused a fatal kernel page fault.The fix (calling __copy_to_user on a kernelspace buffer) seems rather awkward, and will probably make tools such as sparse faint in horror. Wouldn''t it make more sense to have the buffer mapped read/write in the first place and/or fix the LLDD to not do DMA_BIDIRECTIONAL? (I don''t know which of these is correct; I suspect the second?) Cheers, Muli -- Muli Ben-Yehuda http://www.mulix.org | http://mulix.livejournal.com/ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2005-Dec-18 19:29 UTC
Re: [Xen-devel] Re: [Xen-changelog] Work aroudn swiotlb issue where a read-only host buffer is
On 17 Dec 2005, at 14:35, Muli Ben-Yehuda wrote:> On Sat, Dec 17, 2005 at 12:28:06PM +0000, Xen patchbot -unstable wrote: >> # HG changeset patch >> # User kaf24@firebug.cl.cam.ac.uk >> # Node ID b92ca87a2403d465e4d1087f8a7a43223b21bed8 >> # Parent 1509521c824efbae25bb953a2e2a49ab3f7fe7f4 >> Work aroudn swiotlb issue where a read-only host buffer is >> mapped for DMA_BIDIRECTIONAL streaming access by certain >> low-level drivers. This causes an unnecessary copy to the >> host buffer that previously caused a fatal kernel page fault. > > The fix (calling __copy_to_user on a kernelspace buffer) seems rather > awkward, and will probably make tools such as sparse faint in > horror. Wouldn''t it make more sense to have the buffer mapped > read/write in the first place and/or fix the LLDD to not do > DMA_BIDIRECTIONAL? (I don''t know which of these is correct; I suspect > the second?)Option (a) is not a great fit with our blkdev device model, where a frontend only grants the backend read access to a buffer that is to be written to disc. In this case the backend cannot map the buffer for read/write access (and I''d hate to have to change the blkif split-driver protocol to work around a Linux driver oddity). Option (b) is the ''morally correct'' fix, but I see DMA_BIDIRECTIONAL is used in a large number of scsi drivers, all of which probably ought to be fixed to specify the correct single direction. The current fix is a bit skanky, but it is commented and has basically zero overhead. My main fear would be that it might mask genuine kernel bugs, but I think that''s unlikely. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel