Date: Sun, 24 Feb 2019 20:29:11 +0000 (UTC) From: Justin Hibbits <jhibbits@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r344497 - stable/12/sys/contrib/ncsw/user/env Message-ID: <201902242029.x1OKTBnJ020818@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhibbits Date: Sun Feb 24 20:29:11 2019 New Revision: 344497 URL: https://svnweb.freebsd.org/changeset/base/344497 Log: MFC r342811, r343168-r343169 r342811: dtsec: Fix formatting of addresses in translation error messages Don't clamp addresses to 8 hex digits, particularly since this is primarily used now on a 64-bit platform. r343168: powerpc/dpaa: Handle DMAP virtual addresses in DPAA sendfile(2) appears to now use DMAP wherever possible. These addresses are not managed by pmap, so pmap_kextract() returns a 0 physical address, causing failure. This change fixes nginx running on P5020 SoC. r343169: dpaa: fix 32-bit build Book-E powerpc uses 64-bit vm_paddr_t, and 32-bit powerpc has 32-bit pointers, so gcc errors with cast to pointer from integer of different size. As this will not actually be used in reality anyway, simply quiet the warning by casting through uintptr_t. Modified: stable/12/sys/contrib/ncsw/user/env/xx.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/contrib/ncsw/user/env/xx.c ============================================================================== --- stable/12/sys/contrib/ncsw/user/env/xx.c Sun Feb 24 20:15:16 2019 (r344496) +++ stable/12/sys/contrib/ncsw/user/env/xx.c Sun Feb 24 20:29:11 2019 (r344497) @@ -701,10 +701,15 @@ XX_VirtToPhys(void *addr) return (XX_PInfo.portal_ci_pa[QM_PORTAL][cpu] + (vm_offset_t)addr - XX_PInfo.portal_ci_va[QM_PORTAL]); - paddr = pmap_kextract((vm_offset_t)addr); + if (PMAP_HAS_DMAP && (vm_offset_t)addr >= DMAP_BASE_ADDRESS && + (vm_offset_t)addr <= DMAP_MAX_ADDRESS) + return (DMAP_TO_PHYS((vm_offset_t)addr)); + else + paddr = pmap_kextract((vm_offset_t)addr); + if (paddr == 0) printf("NetCommSW: " - "Unable to translate virtual address 0x%08X!\n", addr); + "Unable to translate virtual address %p!\n", addr); else pmap_track_page(kernel_pmap, (vm_offset_t)addr); @@ -757,8 +762,11 @@ XX_PhysToVirt(physAddress_t addr) if (pv != NULL) return ((void *)(pv->pv_va + ((vm_offset_t)addr & PAGE_MASK))); + if (PMAP_HAS_DMAP) + return ((void *)(uintptr_t)PHYS_TO_DMAP(addr)); + printf("NetCommSW: " - "Unable to translate physical address 0x%08llX!\n", addr); + "Unable to translate physical address 0x%09jx!\n", (uintmax_t)addr); return (NULL); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201902242029.x1OKTBnJ020818>