2 * Copyright (c) 2016, Intel Corporation.
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 #include "test/nfit_test.h"
15 #include "../../../drivers/dax/dax-private.h"
17 phys_addr_t
dax_pgoff_to_phys(struct dev_dax
*dev_dax
, pgoff_t pgoff
,
24 for (i
= 0; i
< dev_dax
->num_resources
; i
++) {
25 res
= &dev_dax
->res
[i
];
26 addr
= pgoff
* PAGE_SIZE
+ res
->start
;
27 if (addr
>= res
->start
&& addr
<= res
->end
)
29 pgoff
-= PHYS_PFN(resource_size(res
));
32 if (i
< dev_dax
->num_resources
) {
33 res
= &dev_dax
->res
[i
];
34 if (addr
+ size
- 1 <= res
->end
) {
35 if (get_nfit_res(addr
)) {
38 if (dev_dax
->region
->align
> PAGE_SIZE
)
41 page
= vmalloc_to_page((void *)addr
);
42 return PFN_PHYS(page_to_pfn(page
));