Not sure if this should go to users or devel, but I''ll try here first. I understood that in a Driver Domain that has access to a (PCI) device, ''native'' drivers can be used, but I am having some problems with memory mapped IO from user space. I have a PCI device that has a 64kB mmio range at PCI_BAR_0. This space contains the registers for the device. The Linux driver provides a char device that allows read/write/seek, and mmap for this space. In Linux you can use either read/write/seek to access the space, or memory map it via mmap and access it directly. When using the driver in dom0 under Xen 3.0.4, the read/write/seek method works fine but the mmap does not. None of the related functions return errors, but the mmap does not appear to access the correct memory. Is there anything I am missing? The mmap is performed by a remap_pfn_range() by the driver, and mmap() in the user space code. I am running Ubuntu 6.10 AMD64 Server and I built Xen 3.0.4 from source, including the 2.6.16.33-xen kernel. The driver is running in dom0, no other domains are present. Thanks, Stephen. _______________________________________________ Xen-users mailing list Xen-users@lists.xensource.com http://lists.xensource.com/xen-users
> -----Original Message----- > From: xen-users-bounces@lists.xensource.com > [mailto:xen-users-bounces@lists.xensource.com] On Behalf Of > Stephen Donnelly > Sent: 15 March 2007 20:41 > To: xen-users@lists.xensource.com > Subject: [Xen-users] PCI MMIO? > > Not sure if this should go to users or devel, but I''ll try here first. > > I understood that in a Driver Domain that has access to a > (PCI) device, ''native'' drivers can be used, but I am having > some problems with memory mapped IO from user space. > > I have a PCI device that has a 64kB mmio range at PCI_BAR_0. > This space contains the registers for the device. The Linux > driver provides a char device that allows read/write/seek, > and mmap for this space. In Linux you can use either > read/write/seek to access the space, or memory map it via > mmap and access it directly. When using the driver in dom0 > under Xen 3.0.4, the read/write/seek method works fine but > the mmap does not. None of the related functions return > errors, but the mmap does not appear to access the correct > memory. Is there anything I am missing?It realy shouldn''t make any difference. It''s probably a question for Xen Devel tho''. If you can access the device from kernel mode (have you tried that?) then you should be able to access it from user-mode, I would have thought. The linux kernel is actually responsible for mapping the memory itself, and aside from checking some permissions, there is no difference to the hypervisor whether a domain is DomU or Dom0. -- Mats> > The mmap is performed by a remap_pfn_range() by the driver, > and mmap() in the user space code. > > I am running Ubuntu 6.10 AMD64 Server and I built Xen 3.0.4 > from source, including the 2.6.16.33-xen kernel. The driver > is running in dom0, no other domains are present. > > Thanks, > Stephen. > > >_______________________________________________ Xen-users mailing list Xen-users@lists.xensource.com http://lists.xensource.com/xen-users
On 3/16/07, Petersson, Mats <Mats.Petersson@amd.com> wrote:> I have a PCI device that has a 64kB mmio range at PCI_BAR_0. > > This space contains the registers for the device. The Linux > > driver provides a char device that allows read/write/seek, > > and mmap for this space. In Linux you can use either > > read/write/seek to access the space, or memory map it via > > mmap and access it directly. When using the driver in dom0 > > under Xen 3.0.4, the read/write/seek method works fine but > > the mmap does not. None of the related functions return > > errors, but the mmap does not appear to access the correct > > memory. Is there anything I am missing? > > It realy shouldn''t make any difference. It''s probably a question for Xen > Devel tho''. > > If you can access the device from kernel mode (have you tried that?) > then you should be able to access it from user-mode, I would have > thought. > > The linux kernel is actually responsible for mapping the memory itself, > and aside from checking some permissions, there is no difference to the > hypervisor whether a domain is DomU or Dom0.Thanks for the advice Mats, I may try posting to the devel list. Yes access from the kernel does work, hence my confusion. It seems to be only the memory mapping to user space that is not working, yet this code works fine on non-xen kernels. Stephen. _______________________________________________ Xen-users mailing list Xen-users@lists.xensource.com http://lists.xensource.com/xen-users