|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
RE: [Xen-devel] [patch] more correct pfn_valid()
 
>    #define pfn_valid(_pfn)     ((_pfn) < max_page)
> 
> Since max_page is now above the out-of-range io, the 
> pfn_valid() returns "valid". And hence get_page() is called, 
> but returns an error given that the page count is zero ("not 
> allocated") which ultimately ends up that the ioremap() for 
> several device drivers fails with ENOMEM.
> 
> While attached patch fixes this problem (from empirical 
> evidence), there may be a better solution.
I think the best fix is to have the frame_table cover the whole of
physical ram, and then mark non-ram pages in the frame_table.
To save some memory, we could map the frame_table in virtual address
space, then use __get_user when reading from it (a fault indicates a
non-ram page too)
Best,
Ian
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] [patch] more correct pfn_valid(), Scott Parish
- RE: [Xen-devel] [patch] more correct pfn_valid(),
Ian Pratt <=
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Tian, Kevin
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Ian Pratt
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Tian, Kevin
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Ian Pratt
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Tian, Kevin
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Tian, Kevin
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Ian Pratt
 
- RE: [Xen-devel] [patch] more correct pfn_valid(), Tian, Kevin
 
  
 
 
 |  
  
 | 
    | 
  
  
    |   | 
    |