diff options
author | Maxim Uvarov <maxim.uvarov@oracle.com> | 2012-01-15 20:02:50 -0800 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2012-02-28 17:08:36 +0100 |
commit | 97d2a10d5804d585ab0b58efbd710948401b886a (patch) | |
tree | 1268de77ddfe3b7d48aef7104349a6fa716066b0 | |
parent | 586c6e7013c8cbb8c91aaa6568ec349b1dc2c691 (diff) | |
download | linux-3.10-97d2a10d5804d585ab0b58efbd710948401b886a.tar.gz linux-3.10-97d2a10d5804d585ab0b58efbd710948401b886a.tar.bz2 linux-3.10-97d2a10d5804d585ab0b58efbd710948401b886a.zip |
watchdog: hpwdt: clean up set_memory_x call for 32 bit
1. address 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>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Cc: stable <stable@vger.kernel.org>
-rw-r--r-- | drivers/watchdog/hpwdt.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 8464ea1c36a..3c166d3f4e5 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c @@ -231,7 +231,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_map, 2); asminline_call(&cmn_regs, bios32_entrypoint); if (cmn_regs.u1.ral != 0) { @@ -250,7 +250,8 @@ 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_SIZE - 1) >> PAGE_SHIFT); retval = 0; } } |