Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Xen patches



>>>>> "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



Home | Main Index | Thread Index | Old Index