From nobody Tue Oct 18 08:01:28 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ms5sj0cwdz4gMqF; Tue, 18 Oct 2022 08:01:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ms5sj0BPkz3nL0; Tue, 18 Oct 2022 08:01:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666080089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZZkAiSqV+t+ZTqeg6NeCvcSdDle8rR/NbsBBGLf3pQ=; b=ugwhN+gEIfEJY8NSBKSJFQbFRpuOItQ6a9PfBxslI46YTnmzIxKE4IXdYWV82O93wrdvRC DaeO5B0snwFCvlKWwCx2+LJgKKcXRK4EN23wjyx4XcUAk4KZUPQyDP2tCy/6mXPQWEj6bS AGkDF7PNXVEpq+1AIiHnyUY64CLRxvvPrqg/s6iOFf23oC1fLHZaVhMPmsdR+DVvmGOoji AQYcGGPqrAklnAJPN78iexTUoEhuJP8pCPf6NKJMz5eOWrIxezT/QKpykiDIw/L+pHTWet 2ijdEY/vGjx7NhGOafQn5V8btOLl3gXPLLMUzhsRHm5cOH0YoF3gKx4Lb1UiUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ms5sh6LqKz16P4; Tue, 18 Oct 2022 08:01:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 29I81Sxw044380; Tue, 18 Oct 2022 08:01:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 29I81Suq044379; Tue, 18 Oct 2022 08:01:28 GMT (envelope-from git) Date: Tue, 18 Oct 2022 08:01:28 GMT Message-Id: <202210180801.29I81Suq044379@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Takanori Watanabe Subject: git: 7b5d62bb73e3 - main - ofw: add BUS_GET_DEVICE_PATH interface to openfirm/fdt, somewhat incomplete. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: takawata X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7b5d62bb73e32d50bb07024ac483532fbcaafe81 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666080089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZZkAiSqV+t+ZTqeg6NeCvcSdDle8rR/NbsBBGLf3pQ=; b=CMP1VlN4MdsbmdRwDRLybYwrH/UhPDUUkCCMWwGNpfkU+QmoUAqP7WyIhlps09ePjuI/Hm 47Qx2k2GBsKUGiib3yqEyNKPnUxXnJFf42rnkpZkD8FOZd9jUbHAaBa6WfjlozYnnORB5f jpzm9xZU0UffT6J2pakThOLKcXL69hvhD81KuWnJ9u71lhDurJ1Vmw9JRaP7iy28pE0/+N Ux2yguoXHvzeXBKHvHjWRLA34VfL2/9tJRNp4l3tf/5+tSMyiHexvkjw5sWVni59NMJG7K CuoBIWl9m4ohftVlYqTPUrBPjC/S3nV0OJMZpXEAMTj6ii8zU755ehYas1mZWw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1666080089; a=rsa-sha256; cv=none; b=vZ0TdLMVEQ1wdTN4vXlHZhoNpdA4A1tiEKQXpmyKZd89AZ+xv7LuA1y5haLSZH1AwmVIl/ VsZB4H0hOrrhb52KcK5SbhbXLY7JPaDJtwGS1HeYKQsFzIPn5GwFyANYakQkvcdcRDltTS 5I+xMgANbvW/1+m6200zBe402JZasTUFoPyaQWzHyXkkHQyNGA/5nbz4WVzkbZFknWNH02 NIKzxdbL767kvYM+HKPuZbBvdkvUNPTa+KJbaKE9rhcCboZAOogAg0mYIntijOIcdpbEJC l6fFvHCBY+BdjikPeMRKT10CAFSYo4ILPaI+x8AgeI5Ole7yZt2M9zgdQVNwDA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by takawata: URL: https://cgit.FreeBSD.org/src/commit/?id=7b5d62bb73e32d50bb07024ac483532fbcaafe81 commit 7b5d62bb73e32d50bb07024ac483532fbcaafe81 Author: Takanori Watanabe AuthorDate: 2022-10-18 06:08:53 +0000 Commit: Takanori Watanabe CommitDate: 2022-10-18 07:55:47 +0000 ofw: add BUS_GET_DEVICE_PATH interface to openfirm/fdt, somewhat incomplete. This add BUS_GET_DEVICE_PATH interface, which shows device tree of openfirm/fdt. In qemu-system-arm64 with "virt" machine with device-tree firmware, % devctl getpath OFW cpu0 Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D37031 --- sys/arm/arm/gic_fdt.c | 1 + sys/arm64/arm64/gic_v3_fdt.c | 1 + sys/dev/fdt/simplebus.c | 1 + sys/dev/ofw/ofw_bus_subr.c | 16 ++++++++++++++++ sys/dev/ofw/ofw_bus_subr.h | 1 + sys/dev/ofw/ofw_cpu.c | 1 + sys/sys/bus.h | 1 + 7 files changed, 22 insertions(+) diff --git a/sys/arm/arm/gic_fdt.c b/sys/arm/arm/gic_fdt.c index 5b1b77024df6..9e5e51429534 100644 --- a/sys/arm/arm/gic_fdt.c +++ b/sys/arm/arm/gic_fdt.c @@ -90,6 +90,7 @@ static device_method_t gic_fdt_methods[] = { /* Bus interface */ DEVMETHOD(bus_get_resource_list,gic_fdt_get_resource_list), + DEVMETHOD(bus_get_device_path, ofw_bus_gen_get_device_path), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, gic_ofw_get_devinfo), diff --git a/sys/arm64/arm64/gic_v3_fdt.c b/sys/arm64/arm64/gic_v3_fdt.c index 16007c5c4147..3ccf2e543b8a 100644 --- a/sys/arm64/arm64/gic_v3_fdt.c +++ b/sys/arm64/arm64/gic_v3_fdt.c @@ -64,6 +64,7 @@ static device_method_t gic_v3_fdt_methods[] = { /* Bus interface */ DEVMETHOD(bus_get_resource_list, gic_v3_fdt_get_resource_list), + DEVMETHOD(bus_get_device_path, ofw_bus_gen_get_device_path), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, gic_v3_ofw_get_devinfo), diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c index 0b1277983da0..a69bdf93e7d6 100644 --- a/sys/dev/fdt/simplebus.c +++ b/sys/dev/fdt/simplebus.c @@ -94,6 +94,7 @@ static device_method_t simplebus_methods[] = { DEVMETHOD(bus_child_pnpinfo, ofw_bus_gen_child_pnpinfo), DEVMETHOD(bus_get_resource_list, simplebus_get_resource_list), DEVMETHOD(bus_get_property, simplebus_get_property), + DEVMETHOD(bus_get_device_path, ofw_bus_gen_get_device_path), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, simplebus_get_devinfo), diff --git a/sys/dev/ofw/ofw_bus_subr.c b/sys/dev/ofw/ofw_bus_subr.c index 404bed3c73fa..169bea1f5997 100644 --- a/sys/dev/ofw/ofw_bus_subr.c +++ b/sys/dev/ofw/ofw_bus_subr.c @@ -104,6 +104,22 @@ ofw_bus_gen_child_pnpinfo(device_t cbdev, device_t child, struct sbuf *sb) return (0); }; +int +ofw_bus_gen_get_device_path(device_t cbdev, device_t child, const char *locator, + struct sbuf *sb) +{ + int rv; + + if ( strcmp(locator, BUS_LOCATOR_OFW) == 0){ + rv = bus_generic_get_device_path(cbdev, child, locator, sb); + if (rv == 0){ + sbuf_printf(sb, "/%s", ofw_bus_get_name(child)); + } + return (rv); + } + return (bus_generic_get_device_path(cbdev, child, locator, sb)); +}; + const char * ofw_bus_gen_get_compat(device_t bus, device_t dev) { diff --git a/sys/dev/ofw/ofw_bus_subr.h b/sys/dev/ofw/ofw_bus_subr.h index 89f291f92373..8dcf517fd58b 100644 --- a/sys/dev/ofw/ofw_bus_subr.h +++ b/sys/dev/ofw/ofw_bus_subr.h @@ -84,6 +84,7 @@ ofw_bus_get_type_t ofw_bus_gen_get_type; /* Helper method to report interesting OF properties in pnpinfo */ bus_child_pnpinfo_t ofw_bus_gen_child_pnpinfo; +bus_get_device_path_t ofw_bus_gen_get_device_path; /* Routines for processing firmware interrupt maps */ void ofw_bus_setup_iinfo(phandle_t, struct ofw_bus_iinfo *, int); diff --git a/sys/dev/ofw/ofw_cpu.c b/sys/dev/ofw/ofw_cpu.c index f7bfc10b7b73..8b48e645f1b4 100644 --- a/sys/dev/ofw/ofw_cpu.c +++ b/sys/dev/ofw/ofw_cpu.c @@ -68,6 +68,7 @@ static device_method_t ofw_cpulist_methods[] = { /* Bus interface */ DEVMETHOD(bus_add_child, bus_generic_add_child), DEVMETHOD(bus_child_pnpinfo, ofw_bus_gen_child_pnpinfo), + DEVMETHOD(bus_get_device_path, ofw_bus_gen_get_device_path), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, ofw_cpulist_get_devinfo), diff --git a/sys/sys/bus.h b/sys/sys/bus.h index 5dead4dd382e..2f9a5a6de588 100644 --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -761,6 +761,7 @@ void bus_data_generation_update(void); #define BUS_LOCATOR_ACPI "ACPI" #define BUS_LOCATOR_FREEBSD "FreeBSD" #define BUS_LOCATOR_UEFI "UEFI" +#define BUS_LOCATOR_OFW "OFW" extern int bus_current_pass;