From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arvind R Subject: Re: [Solved] Nouveau on dom0 Date: Fri, 12 Mar 2010 11:42:05 +0530 Message-ID: References: <20100303181303.GA21078@phenom.dumpdata.com> <20100304182518.GB20263@phenom.dumpdata.com> <20100305202309.GA15454@phenom.dumpdata.com> <20100308175127.GF4568@phenom.dumpdata.com> <20100311201536.GA22182@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=005045016abd22340d04819469b1 Return-path: In-Reply-To: <20100311201536.GA22182@phenom.dumpdata.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --005045016abd22340d04819469b1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Mar 12, 2010 at 1:45 AM, Konrad Rzeszutek Wilk wrote: >> >> THAT SOLVED THE FAULTING; OUT_RING now completes under Xen. > > :-) > >> > >> > That is great! Thanks for doing all the hard-work in digging through t= he >> > code. >> > >> > >> > So this means you got graphics on the screen? Or at least that Kernel >> > Mode Setting and the DRM parts show fancy graphics during boot? >> >> AT LAST, yes! Patch: (after aboout 600 reboots!) >> >> diff -Naur nouveau-kernel.orig/drivers/gpu/drm/ttm/ttm_bo_vm.c >> nouveau-kernel.new/drivers/gpu/drm/ttm/ttm_bo_vm.c >> --- nouveau-kernel.orig/drivers/gpu/drm/ttm/ttm_bo_vm.c 2010-01-27 >> 10:19:28.000000000 +0530 >> +++ nouveau-kernel.new/drivers/gpu/drm/ttm/ttm_bo_vm.c =A02010-03-10 >> 17:28:59.000000000 +0530 >> @@ -271,7 +271,10 @@ >> =A0 =A0 =A0 =A0 =A0*/ >> >> =A0 =A0 =A0 =A0 vma->vm_private_data =3D bo; >> - =A0 =A0 =A0 vma->vm_flags |=3D VM_RESERVED | VM_IO | VM_MIXEDMAP | VM_= DONTEXPAND; >> + =A0 =A0 =A0 vma->vm_flags |=3D VM_RESERVED | VM_MIXEDMAP | VM_DONTEXPA= ND; >> + =A0 =A0 =A0 if (!((bo->mem.placement & TTM_PL_MASK_MEM) & TTM_PL_FLAG_= TT)) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 vma->vm_flags |=3D VM_IO; >> + =A0 =A0 =A0 vma->vm_page_prot =3D vma_get_vm_prot(vma->vm_flags); >> =A0 =A0 =A0 =A0 return 0; >> =A0out_unref: >> =A0 =A0 =A0 =A0 ttm_bo_unref(&bo); >> Sorry for the typo: vma_get_vm_prot in last added line should be vm_get_page_prot >> The previous patch worked for memory-space exported to user via >> mmap. That worked for the pushbuf, but not for mode-setting (I guess). >> The ensuing crashes were hard - no logs, nothing. So had to devise >> ways of forcing log-writing before crashing (and praying). The located >> iomem problem and had search code for appropriate condition. > > Aaah. >> And setting the vm_page_prot IS important! >> >> Nouveau does kernel-modesetting only. The framebuffer device uses >> channel 1 and is as regular a framebuffer as any other. 2D graphics >> operations use channel 2 (xf86-video-nouveau). 3D graphics (gallium) >> use a channel for every 3D window. There are 128 channels, 0 and 127 >> being reserved. Every channel has a dma-engine which is user triggered > > What happens if you use only one channel? Does it grow to accomodate > more of the writes to the ring? One channel for one compostion. So channel 1 for the consolefb device. So if X is set to omit acceleration, it works thro the consolefb. Channel 2 is= set up for 2D graphics which alone xf86-video-nouveau (the DDX component) supports. Channel 3 is set up for 3D acceleration provided by gallium (Mesa= ) - sort of tunneling thro the DDX layer. If you run glxgears in a window, Channel 4 will be set up the application. Each 'Channe' is self-contained with pushbufs, dma, bo, gpuobject .... > >> thro' pushbuffer rings. Every DMA has a 1MiB VRAM space which forms one >> of the targets of DMA ops - the other being in the opaque GPU-space. The > > So 1MiB per channel? Is this how the textures get loaded via this 1MiB > VRAM? Yes. >> BO encapsualtes the virtual-address space of the user VM. and the GPU-DM= A >> is provided a constructed PageTable that is consistent with the kernel v= iew of >> that space. The GEM_NEW ioctl sets up the whole space-management machine= ry, >> the user-space is mmaped out, and the operations triggered thro the push= buf. > > So when the write to the RING is done, the GPU accesses the System RAM me= mory. > What is then the deal with the 512MB or so video cards? Is that only > used for putting textures on it? Half the memory is used as the viewport to the system CPU and the other half is the GPU system. The system/user transfer to the viewport (and controls via the iomem space). The DMA is NOT programmed in the conventiona= l way - it has the lowest-level pagetable created for the instances 1MiB spac= e (to which it is bound) and the other end is managed by the GPU intelligence= . >> YAHOO! (just a simple shout) > > Thank you for solving this problem! If you ever are in the > Boston area give me a ring and the beers (or your favorite liquid) is on > me! > vice-versa if you are around Chennai, India. Actually, I'm neither an expert on the deep internals of the kernel (though I'm getting to know more about it) nor the new generation of graphics. Just reading about the graphics devices of today got me frustrated because I could not get it it up on Xen, and the debates on TTM, GEM made me think that either something was drastically wrong or something stupid was missed. So this mission. Video-cards have loads of specialised processors - dozens of them often. CUDA is an environment/architecure that allows normal C programs to use these cores - someday graphics cards will also do graphics! So somebody will have to ensure that Xen in the future is enabled for it - it doesn't stop with Direct-Rendering - which also needs enhancements. Having X accelerated brought down dom0 CPU usage from 15-30% on my system to 1-5% when running a sample WinXP (with meadowcourt PVops drivers) domU! PS. I sent a mail to your personal address with all the patches I used in the workout - am attaching it here too - in case it is of interest to someb= ody. You should look a the correct_section_mismatch.patch for what it is worth. --005045016abd22340d04819469b1 Content-Type: application/x-gzip; name="xen-2.6.31.6.patches.tar.gz" Content-Disposition: attachment; filename="xen-2.6.31.6.patches.tar.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g6oladme0 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 KAAYAQA= --005045016abd22340d04819469b1 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --005045016abd22340d04819469b1--