]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
hpwdt: clean up set_memory_x call for 32 bit
authorMaxim Uvarov <maxim.uvarov@oracle.com>
Sun, 15 Jan 2012 20:08:20 +0000 (12:08 -0800)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Sun, 15 Jan 2012 20:08:20 +0000 (12:08 -0800)
1. addess has to be page aligned.
2. set_memory_x uses page size argument, not size.
Bug causes with following commit:
commit da28179b4e90dda56912ee825c7eaa62fc103797
Author: Mingarelli, Thomas <Thomas.Mingarelli@hp.com>
Date:   Mon Nov 7 10:59:00 2011 +0100

     watchdog: hpwdt: Changes to handle NX secure bit in 32bit path

    commit e67d668e147c3b4fec638c9e0ace04319f5ceccd upstream.

    This patch makes use of the set_memory_x() kernel API in order
    to make necessary BIOS calls to source NMIs.

Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
drivers/watchdog/hpwdt.c

index 9cb60dfbb59eb0fc6dbab3386af30698bfd87219..7f04d37fd23a2117b91426358adfc62372f1f33a 100644 (file)
@@ -216,7 +216,7 @@ static int __devinit cru_detect(unsigned long map_entry,
 
        cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE;
 
-       set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE));
+       set_memory_x((unsigned long)bios32_entrypoint & PAGE_MASK, 2);
        asminline_call(&cmn_regs, bios32_entrypoint);
 
        if (cmn_regs.u1.ral != 0) {
@@ -235,7 +235,7 @@ static int __devinit cru_detect(unsigned long map_entry,
                        cru_rom_addr =
                                ioremap(cru_physical_address, cru_length);
                        if (cru_rom_addr) {
-                               set_memory_x((unsigned long)cru_rom_addr, cru_length);
+                               set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK, cru_length >> PAGE_SHIFT);
                                retval = 0;
                        }
                }