Messages in this thread Patches in this message | | | From | Hoang-Nam Nguyen <> | Subject | [PATCH 2.6.19 2/4] ehca: hcp_phyp.c: correct page mapping in 64k page mode | Date | Sun, 5 Nov 2006 21:41:28 +0100 |
| |
Hello Roland! This is another patch of ehca for 64k page support. It fixes a bug that maps 4k aligned addresses in 64k page mode in a wrong way. Thanks! Nam
Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com> ---
hcp_phyp.c | 5 +++--0018_64kpage_ioremap.patch 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/ehca/hcp_phyp.c b/drivers/infiniband/hw/ehca/hcp_phyp.c index 0b1a477..6237252 100644 --- a/drivers/infiniband/hw/ehca/hcp_phyp.c +++ b/drivers/infiniband/hw/ehca/hcp_phyp.c @@ -44,13 +44,14 @@ #include "hipz_hw.h" int hcall_map_page(u64 physaddr, u64 *mapaddr) { - *mapaddr = (u64)(ioremap(physaddr, EHCA_PAGESIZE)); + *mapaddr = (u64)ioremap((physaddr & PAGE_MASK), PAGE_SIZE) + + (physaddr & (~PAGE_MASK)); return 0; } int hcall_unmap_page(u64 mapaddr) { - iounmap((volatile void __iomem*)mapaddr); + iounmap((void __iomem*)(mapaddr & PAGE_MASK)); return 0; } diff --git a/drivers/infiniband/hw/ehca/hcp_phyp.c b/drivers/infiniband/hw/ehca/hcp_phyp.c index 0b1a477..6237252 100644 --- a/drivers/infiniband/hw/ehca/hcp_phyp.c +++ b/drivers/infiniband/hw/ehca/hcp_phyp.c @@ -44,13 +44,14 @@ #include "hipz_hw.h" int hcall_map_page(u64 physaddr, u64 *mapaddr) { - *mapaddr = (u64)(ioremap(physaddr, EHCA_PAGESIZE)); + *mapaddr = (u64)ioremap((physaddr & PAGE_MASK), PAGE_SIZE) + + (physaddr & (~PAGE_MASK)); return 0; } int hcall_unmap_page(u64 mapaddr) { - iounmap((volatile void __iomem*)mapaddr); + iounmap((void __iomem*)(mapaddr & PAGE_MASK)); return 0; } | |