lkml.org 
[lkml]   [2012]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 2/3] ACPI, APEI: Add RAM mapping support to ACPI
    From
    Date
    On Sun, 2012-01-29 at 13:41 -0700, Bjorn Helgaas wrote:
    > On Sat, Jan 28, 2012 at 5:58 PM, Huang Ying <ying.huang@intel.com> wrote:
    > > 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]
    > >> > +
    > >> > +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.

    I think that is about the semantics of ioremap().

    Hi, Ingo,

    Can you describe why normal RAM is not allowed to be mapped by
    ioremap()?

    > >> 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?

    Copy from Tony's mail,

    This (Ying: use kmap insted of ioremap to map RAM) might be a problem on
    ia64 - it is s/w responsibility to make sure that we don't map the same
    underlying physical address using different cache attributes - e.g. we
    must not map memory both cacheable and uncacheable at the same time.
    Accessing such a mis-attributed page will result in a machine check.

    So I'd worry that if the memory in question was being used as
    uncacheable, this code might result in a cached access, which would
    crash the machine.

    Best Regards,
    Huang Ying



    \
     
     \ /
      Last update: 2012-01-30 01:37    [W:0.033 / U:14.944 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site