|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] kmap_atomic issue with SLES11SP1 32bit XEN driver code
>>> On 15.12.11 at 17:15, "Brace, Don" <dab@xxxxxx> wrote:
> I do not understand what this means:
> " That is, we'd be susceptible to this problem only if within a
> lazy-mode enabled section k{,un}map_atomic were used
> synchronously (which I'd consider a coding mistake)."
>
> Could you elaborate on this?
Not sure what additional explanation is needed. kmap_atomic() is
intended to be used in atomic context, and if you use it elsewhere
that's a mis-use.
> Here is what I am trying to do.
> I am in a LLD I have bus addresses that are DMA-able that I would normally
> DMA to except this driver is emulating hardware in software and so it does
> not need to DMA is needs to transfer the data with the CPU.
So this makes clear that what I told you about a possibly missing
translation is likely the culprit. Quoting from your original mail
linux_page = __pfn_to_page(physical_address >> PAGE_SHIFT);
I have to assume that physical_address really isn't a physical address,
but a bus one. Hence you first need to translate it to a physical one
before passing it to __pfn_to_page().
> On non-XEN 32bit kernels I use kmap_atomic() and it handles both highmem
> addresses and non highmem addresses with no issues.
And so does it on Xen.
> When I am running 32bit XEN kernels I run into issues like this:
> "BUG: unable to handle kernel paging request at 9822bf40"
Because you pass in a random struct page *.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |