|
@@ -161,11 +161,15 @@ static void __iomem *ghes_ioremap_pfn_nmi(u64 pfn)
|
|
|
|
|
|
static void __iomem *ghes_ioremap_pfn_irq(u64 pfn)
|
|
static void __iomem *ghes_ioremap_pfn_irq(u64 pfn)
|
|
{
|
|
{
|
|
- unsigned long vaddr;
|
|
|
|
|
|
+ unsigned long vaddr, paddr;
|
|
|
|
+ pgprot_t prot;
|
|
|
|
|
|
vaddr = (unsigned long)GHES_IOREMAP_IRQ_PAGE(ghes_ioremap_area->addr);
|
|
vaddr = (unsigned long)GHES_IOREMAP_IRQ_PAGE(ghes_ioremap_area->addr);
|
|
- ioremap_page_range(vaddr, vaddr + PAGE_SIZE,
|
|
|
|
- pfn << PAGE_SHIFT, PAGE_KERNEL);
|
|
|
|
|
|
+
|
|
|
|
+ paddr = pfn << PAGE_SHIFT;
|
|
|
|
+ prot = arch_apei_get_mem_attribute(paddr);
|
|
|
|
+
|
|
|
|
+ ioremap_page_range(vaddr, vaddr + PAGE_SIZE, paddr, prot);
|
|
|
|
|
|
return (void __iomem *)vaddr;
|
|
return (void __iomem *)vaddr;
|
|
}
|
|
}
|