mirror of https://gitee.com/openkylin/linux.git
x86: fix set_fixmap to use phys_addr_t
Use phys_addr_t for receiving a physical address argument instead of unsigned long. This allows fixmap to handle pages higher than 4GB on x86-32. Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: Ingo Molnar <mingo@elte.hu> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
62b8e680e6
commit
3b3809ac53
|
@ -151,11 +151,11 @@ extern pte_t *pkmap_page_table;
|
||||||
|
|
||||||
void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
|
void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
|
||||||
void native_set_fixmap(enum fixed_addresses idx,
|
void native_set_fixmap(enum fixed_addresses idx,
|
||||||
unsigned long phys, pgprot_t flags);
|
phys_addr_t phys, pgprot_t flags);
|
||||||
|
|
||||||
#ifndef CONFIG_PARAVIRT
|
#ifndef CONFIG_PARAVIRT
|
||||||
static inline void __set_fixmap(enum fixed_addresses idx,
|
static inline void __set_fixmap(enum fixed_addresses idx,
|
||||||
unsigned long phys, pgprot_t flags)
|
phys_addr_t phys, pgprot_t flags)
|
||||||
{
|
{
|
||||||
native_set_fixmap(idx, phys, flags);
|
native_set_fixmap(idx, phys, flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,7 +347,7 @@ struct pv_mmu_ops {
|
||||||
/* Sometimes the physical address is a pfn, and sometimes its
|
/* Sometimes the physical address is a pfn, and sometimes its
|
||||||
an mfn. We can tell which is which from the index. */
|
an mfn. We can tell which is which from the index. */
|
||||||
void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
|
void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
|
||||||
unsigned long phys, pgprot_t flags);
|
phys_addr_t phys, pgprot_t flags);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct raw_spinlock;
|
struct raw_spinlock;
|
||||||
|
@ -1432,7 +1432,7 @@ static inline void arch_leave_lazy_mmu_mode(void)
|
||||||
void arch_flush_lazy_mmu_mode(void);
|
void arch_flush_lazy_mmu_mode(void);
|
||||||
|
|
||||||
static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
|
static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
|
||||||
unsigned long phys, pgprot_t flags)
|
phys_addr_t phys, pgprot_t flags)
|
||||||
{
|
{
|
||||||
pv_mmu_ops.set_fixmap(idx, phys, flags);
|
pv_mmu_ops.set_fixmap(idx, phys, flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,7 +345,8 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
|
||||||
fixmaps_set++;
|
fixmaps_set++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags)
|
void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
|
||||||
|
pgprot_t flags)
|
||||||
{
|
{
|
||||||
__native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
|
__native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1750,7 +1750,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_X86_64 */
|
#endif /* CONFIG_X86_64 */
|
||||||
|
|
||||||
static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot)
|
static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
|
||||||
{
|
{
|
||||||
pte_t pte;
|
pte_t pte;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue