Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 May 2025 13:07:47 GMT
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: ac1943f97c01 - releng/14.3 - powerpc: Always use BE tag in nexus_map_resource
Message-ID:  <202505151307.54FD7lnq008977@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch releng/14.3 has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=ac1943f97c01b0ef049a9bfd81cf2b4a05d0a9d9

commit ac1943f97c01b0ef049a9bfd81cf2b4a05d0a9d9
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2025-05-13 01:35:14 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2025-05-15 13:06:51 +0000

    powerpc: Always use BE tag in nexus_map_resource
    
    7b5a5e4e replaced nexus_activate_resource() with the bus generic
    equivalent, which uses bus_map_resource().  However, though not intended
    to have a functional change, nexus_map_resource() uses the bus tag of
    the build (BE vs LE), while nexus_activate_resource() always explicitly
    set a big-endian tag, leading to failures on powerpc64le now.  Using BE
    unless otherwise explicitly specified with the RF_LITTLEENDIAN fixes LE
    on bare metal, and doesn't hurt in a VM, which nexus_map_resource() was
    added for.
    
    Reported by:    pkubaj
    Tested by:      pkubaj
    Fixes:          7b5a5e4e("powerpc nexus: Use bus_generic_rman_*")
    MFC after:      1 day
    Approved by:    re(cperciva)
    
    (cherry picked from commit c4921a0faaf1683f39347dd066000d929c39c8b9)
    (cherry picked from commit 45d585ab7f222ca36988c406df528128a17f9884)
---
 sys/powerpc/powerpc/nexus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/powerpc/powerpc/nexus.c b/sys/powerpc/powerpc/nexus.c
index 826e75daa374..b40bb26fd395 100644
--- a/sys/powerpc/powerpc/nexus.c
+++ b/sys/powerpc/powerpc/nexus.c
@@ -289,7 +289,7 @@ nexus_map_resource(device_t bus, device_t child, int type, struct resource *r,
 		if ((rman_get_flags(r) & RF_LITTLEENDIAN) != 0)
 			map->r_bustag = &bs_le_tag;
 		else
-			map->r_bustag = nexus_get_bus_tag(NULL, NULL);
+			map->r_bustag = &bs_be_tag;
 		map->r_size = length;
 		map->r_bushandle = (bus_space_handle_t)map->r_vaddr;
 		break;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505151307.54FD7lnq008977>