1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2016, Intel Corporation.
5 #include "test/nfit_test.h"
7 #include "../../../drivers/dax/dax-private.h"
9 phys_addr_t
dax_pgoff_to_phys(struct dev_dax
*dev_dax
, pgoff_t pgoff
,
14 for (i
= 0; i
< dev_dax
->nr_range
; i
++) {
15 struct dev_dax_range
*dax_range
= &dev_dax
->ranges
[i
];
16 struct range
*range
= &dax_range
->range
;
17 unsigned long long pgoff_end
;
20 pgoff_end
= dax_range
->pgoff
+ PHYS_PFN(range_len(range
)) - 1;
21 if (pgoff
< dax_range
->pgoff
|| pgoff
> pgoff_end
)
23 addr
= PFN_PHYS(pgoff
- dax_range
->pgoff
) + range
->start
;
24 if (addr
+ size
- 1 <= range
->end
) {
25 if (get_nfit_res(addr
)) {
28 if (dev_dax
->region
->align
> PAGE_SIZE
)
31 page
= vmalloc_to_page((void *)addr
);
32 return PFN_PHYS(page_to_pfn(page
));