>>>>> "Manuel" == Manuel Bouyer <bouyer%antioche.eu.org@localhost> writes: Manuel> On Tue, Sep 22, 2015 at 08:58:21AM +0530, Cherry G. Mathew wrote: >> Hi, >> >> Here's a bunch of drm patches for dom0. Works on my ivybridge >> with dom0_mem=2046M >> >> They will *not* work if you allocate more ram than your h/w dma >> can address. Manuel> I think it's worse than that: it won't work if you have more Manuel> physical RAM than your HW DMA can address. It may work at Manuel> boot time but not later. There is no guarantee that your Manuel> dom0 has memory in the low addresses. In fact, during the Manuel> dom0 life there will be machine pages deallocated and Manuel> reallocated (in the driver backends for example), and these Manuel> pages may be in high memory. Oh, oops, I'd forgotten that the hypervisor would re-use the rest. Hm. In any case, I'd be keen to see peoples' boot up dmesg on other hardware (see below): Manuel> For this to work, pages with PA constraints should be Manuel> allocated by the Xen backend, which can request memory from Manuel> the hypervisor with the right addresses. But for this the Manuel> whole stuff with freelist has to be redone to get memory Manuel> from a port-specific allocator instead of freelists and this Manuel> probably requires changes to UVM, and better integration Manuel> with bus_dma(9) (the fundamental problem being that the drm Manuel> code does DMA without using bus_dma(9)). This will help Manuel> other non-x86 ports too. I don't want to be rude (and I'm Manuel> glad you're working on this) but I think your patch goes in Manuel> the wrong direction. I understand this well. I've attached a hack to override pgo_get/pgo_put with ditto copies from uvm_aobj.c - it's pretty horrible, but I just want to weed out the p2m issues (for esp. the hack in the Xen pmap_enter()/pmap_kenter() code that assumes ma == pa for outside of tracked pages) before getting all "architectural". My immediate problem is that the cursor doesn't display on my hardware. I'd like to know if this is consistent across other hardware, and if so, why. Also glxgears doesn't work (crashes). Any thoughts will help me make progress to clean up things. Ideally I'd like to first design a cache-able version of the xen_bus_dma.c alloc function (perhaps useing pool_cache(9). -- Cherry
Attachment:
xen_dma
Description: Binary data