lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 25 Oct 2006 13:12:01 +0200 From: Jan-Bernd Themann <ossthema@...ibm.com> To: Jeff Garzik <jeff@...zik.org> Cc: netdev <netdev@...r.kernel.org>, Christoph Raisch <raisch@...ibm.com>, "Jan-Bernd Themann" <themann@...ibm.com>, "linux-kernel" <linux-kernel@...r.kernel.org>, "linux-ppc" <linuxppc-dev@...abs.org>, Marcus Eder <meder@...ibm.com>, Thomas Klein <tklein@...ibm.com> Subject: [PATCH 2.6.19-rc3 2/2] ehea: 64K page support fix This patch fixes the 64K page support Signed-off-by: Jan-Bernd Themann <themann@...ibm.com> --- drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_phyp.h | 14 +++++++++++++- drivers/net/ehea/ehea_qmr.c | 13 +++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index b40724f..cd412b5 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -39,7 +39,7 @@ #include <asm/abs_addr.h> #include <asm/io.h> #define DRV_NAME "ehea" -#define DRV_VERSION "EHEA_0034" +#define DRV_VERSION "EHEA_0040" #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \ | NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) diff --git a/drivers/net/ehea/ehea_phyp.h b/drivers/net/ehea/ehea_phyp.h index fa51e3b..59ab646 100644 --- a/drivers/net/ehea/ehea_phyp.h +++ b/drivers/net/ehea/ehea_phyp.h @@ -81,15 +81,27 @@ #define NELR_PORTSTATE_CHG EHEA_BMASK_IB static inline void hcp_epas_ctor(struct h_epas *epas, u64 paddr_kernel, u64 paddr_user) { +#ifdef CONFIG_PPC_64K_PAGES + /* To support 64k pages we must round to 64k page boundary */ + epas->kernel.addr = + ioremap((paddr_kernel & 0xFFFFFFFFFFFF0000), PAGE_SIZE) + + (paddr_kernel & 0xFFFF); +#else epas->kernel.addr = ioremap(paddr_kernel, PAGE_SIZE); +#endif epas->user.addr = paddr_user; } static inline void hcp_epas_dtor(struct h_epas *epas) { +#ifdef CONFIG_PPC_64K_PAGES + if (epas->kernel.addr) + iounmap((void __iomem*)((u64)epas->kernel.addr & + 0xFFFFFFFFFFFF0000)); +#else if (epas->kernel.addr) iounmap(epas->kernel.addr); - +#endif epas->user.addr = 0; epas->kernel.addr = 0; } diff --git a/drivers/net/ehea/ehea_qmr.c b/drivers/net/ehea/ehea_qmr.c index 3e18623..3daedfa 100644 --- a/drivers/net/ehea/ehea_qmr.c +++ b/drivers/net/ehea/ehea_qmr.c @@ -512,7 +512,7 @@ int ehea_reg_mr_adapter(struct ehea_adap start = KERNELBASE; end = (u64)high_memory; - nr_pages = (end - start) / PAGE_SIZE; + nr_pages = (end - start) / EHEA_PAGESIZE; pt = kzalloc(PAGE_SIZE, GFP_KERNEL); if (!pt) { @@ -538,9 +538,9 @@ int ehea_reg_mr_adapter(struct ehea_adap if (nr_pages > 1) { u64 num_pages = min(nr_pages, (u64)512); for (i = 0; i < num_pages; i++) - pt[i] = virt_to_abs((void*)(((u64)start) - + ((k++) * - PAGE_SIZE))); + pt[i] = virt_to_abs((void*)(((u64)start) + + ((k++) * + EHEA_PAGESIZE))); hret = ehea_h_register_rpage_mr(adapter->handle, adapter->mr.handle, 0, @@ -548,8 +548,9 @@ int ehea_reg_mr_adapter(struct ehea_adap num_pages); nr_pages -= num_pages; } else { - u64 abs_adr = virt_to_abs((void*)(((u64)start) - + (k * PAGE_SIZE))); + u64 abs_adr = virt_to_abs((void*)(((u64)start) + + (k * EHEA_PAGESIZE))); + hret = ehea_h_register_rpage_mr(adapter->handle, adapter->mr.handle, 0, 0, abs_adr,1); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists