1 /* SPDX-License-Identifier: GPL-2.0-only */
2
3 #ifndef XEN_STATIC_MEMORY_H
4 #define XEN_STATIC_MEMORY_H
5
6 #include <xen/fdt-kernel.h>
7
8 #ifdef CONFIG_STATIC_MEMORY
9
10 #include <xen/pfn.h>
11
init_staticmem_bank(const struct membank * bank)12 static inline void init_staticmem_bank(const struct membank *bank)
13 {
14 mfn_t bank_start = _mfn(PFN_UP(bank->start));
15 unsigned long bank_pages = PFN_DOWN(bank->size);
16 mfn_t bank_end = mfn_add(bank_start, bank_pages);
17
18 if ( mfn_x(bank_end) <= mfn_x(bank_start) )
19 return;
20
21 unprepare_staticmem_pages(mfn_to_page(bank_start), bank_pages, false);
22 }
23
24 void allocate_static_memory(struct domain *d, struct kernel_info *kinfo,
25 const struct dt_device_node *node);
26 void assign_static_memory_11(struct domain *d, struct kernel_info *kinfo,
27 const struct dt_device_node *node);
28 void init_staticmem_pages(void);
29
30 #else /* !CONFIG_STATIC_MEMORY */
31
allocate_static_memory(struct domain * d,struct kernel_info * kinfo,const struct dt_device_node * node)32 static inline void allocate_static_memory(struct domain *d,
33 struct kernel_info *kinfo,
34 const struct dt_device_node *node)
35 {
36 ASSERT_UNREACHABLE();
37 }
38
assign_static_memory_11(struct domain * d,struct kernel_info * kinfo,const struct dt_device_node * node)39 static inline void assign_static_memory_11(struct domain *d,
40 struct kernel_info *kinfo,
41 const struct dt_device_node *node)
42 {
43 ASSERT_UNREACHABLE();
44 }
45
init_staticmem_pages(void)46 static inline void init_staticmem_pages(void) {};
47
48 #endif /* CONFIG_STATIC_MEMORY */
49
50 #endif /* XEN_STATIC_MEMORY_H */
51
52 /*
53 * Local variables:
54 * mode: C
55 * c-file-style: "BSD"
56 * c-basic-offset: 4
57 * indent-tabs-mode: nil
58 * End:
59 */
60