Re: [PATCH 2/3] ACPI, APEI: Add RAM mapping support to ACPI
From: Huang Ying <hidden>
Date: 2012-02-06 01:37:50
Also in:
lkml
Hi, On Sun, 2012-01-29 at 13:41 -0700, Bjorn Helgaas wrote:
On Sat, Jan 28, 2012 at 5:58 PM, Huang Ying [off-list ref] wrote:quoted
Hi, Bjorn, Sorry for late. Just return from Chinese new year holiday. On Sat, 2012-01-21 at 08:04 -0700, Bjorn Helgaas wrote: [snip]quoted
quoted
+ +static void __iomem *acpi_map(acpi_physical_address pg_off, unsigned long pg_sz) +{ + unsigned long pfn; + + pfn = pg_off >> PAGE_SHIFT; + if (should_use_kmap(pfn)) { + if (pg_sz > PAGE_SIZE) + return NULL; + return (void __iomem __force *)kmap(pfn_to_page(pfn)); + } else + return acpi_os_ioremap(pg_off, pg_sz);This implies that ioremap() works differently on ia64 than on x86. Apparently one can ioremap() RAM on x86, but not on ia64. Why is this different? Shouldn't we instead fix ioremap() on ia64 so it works the same as on x86?If my understanding were correct, ioremap can not work for RAM on x86. So we need to use kmap for RAM. And on IA64, ioremap works for RAM and will take care of cache attributes while kmap will not. So ioremap is used on IA64, while kmap is used on x86.My point is that the *user* of ioremap() shouldn't need to care what architecture we're on. For example, maybe the ioremap() implementation could be changed so that it uses kmap() internally when necessary.quoted
quoted
I looked at the ia64 ioremap(), and I can't see the reason it fails for RAM. Huang, do you remember the details from 76da3fb3575?This question is still open. Do you remember anything about it?
Another question about kmap on IA64. If my understanding were correct, kmap() is just page_address() on IA64. So it is just uses the identity map instead of creating a new map. Will there be any problem with it compared with ioremap()? Best Regards, Huang Ying