[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Consuming PCI device in PV kernel
On Fri, 2014-07-25 at 14:21 +0100, Simon Martin wrote: > Hello Ian, > > Thanks for the response. > > >> I have tried calling HYPERCALL_update_va_mapping and > >> HYPERCALL_mmu_update and they both fail. HYPERCALL_update_va_mapping > >> gives me the following in xl dmesg: > >> > >> (XEN) mm.c:1700:d292v0 Bad L1 flags 400000 > >> > >> Looking at the code I can't see where bit 22 is being set! > > > Without seeing you code I've no idea about this (even if I could see it, > > I dunno...) > > Bit 22 is being set in Xen code. Hopefully someone who knows the x86 PV stuff can chime in then, I looked but can't see what this represents. > This is what I am doing: > > void *micropv_remap_page(uint64_t physical_address, uint64_t machine_address, > int readonly) > { > // Update the mapping. I have had problems using a readonly mapping, > however I'm not sure whether that was to do with > // this call, or the page that was being mapped. > int rc = HYPERVISOR_update_va_mapping(physical_address, > __pte(machine_address | (readonly ? L1_PROT_RO : L1_PROT)), UVMF_INVLPG); The first argument should be the virtual address, I think. But maybe you have a 1:1 mapping so this doesn't matter? > if (rc) > { > PRINTK("HYPERVISOR_update_va_mapping returns %i", rc); > return NULL; > } > else > { > PRINTK("Machine Address %lx mapped to Physical Address %lx", > machine_address, physical_address); > return (void*)physical_address; > } > } > > This is the call when I try to map the PCI BAR. > > ptr = micropv_remap_page((uint64_t)buffer, > pci_device.bar[0].memory.address << 4, 0); Are you sure about that BAR decode? Don't you need to at least mask the bottom 4 bits? You might also need to mask it to a page boundary, depending on what the address is... I'm not 100% sure about that shift, it might already be encoded in the BAR register due to the layout. Sometimes h/w people arrange it that way... IOW you might only need to mask and not shift. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |