libs/guest: don't use unsigned long as type for PFNs

Declarations of xc_dom_console_init() and
xc_dom_console_set_disconnected() in libxenguest.h don't match their
implementation in the library.

Under arm32, xen_pfn_t is a uint64_t and wider than unsigned long.

Use xen_pfn_t for GFNs in the library to fix that. At the same time
change the parameter name of the implementation to console_gfn,
matching the interface declaration in the header and reality (it is
a GFN, not a PFN).

Fixes: b6fc307b0b ("libs/guest: Set console as disconnected on resume")
Fixes: 971b7d5ecb ("libs/guest: Set console page to disconnected")
Reported-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Tested-by: Luca Fancellu <luca.fancellu@arm.com>
Release-Acked-By: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
Juergen Gross authored and Julien Grall committed 2025-10-06 12:22:21 +01:00
1 parent b6fc307b0b
commit fd67ca4e58
1 file changed
+7 -7
+7 -7
View File
@@ -430,12 +430,12 @@ int xc_dom_gnttab_init(struct xc_dom_image *dom)
static int dom_console_init(xc_interface *xch,
uint32_t domid,
unsigned long dst_pfn,
xen_pfn_t console_gfn,
bool clear)
{
const size_t size = PAGE_SIZE;
struct xencons_interface *xencons = xc_map_foreign_range(
xch, domid, size, PROT_WRITE, dst_pfn);
xch, domid, size, PROT_WRITE, console_gfn);
if ( xencons == NULL )
return -1;
@@ -445,22 +445,22 @@ static int dom_console_init(xc_interface *xch,
xencons->connection = XENCONSOLE_DISCONNECTED;
munmap(xencons, size);
xc_domain_cacheflush(xch, domid, dst_pfn, 1);
xc_domain_cacheflush(xch, domid, console_gfn, 1);
return 0;
}
int xc_dom_console_init(xc_interface *xch,
uint32_t domid,
unsigned long dst_pfn)
xen_pfn_t console_gfn)
{
return dom_console_init(xch, domid, dst_pfn, true);
return dom_console_init(xch, domid, console_gfn, true);
}
int xc_dom_console_set_disconnected(xc_interface *xch,
uint32_t domid,
unsigned long dst_pfn)
xen_pfn_t console_gfn)
{
return dom_console_init(xch, domid, dst_pfn, false);
return dom_console_init(xch, domid, console_gfn, false);
}
/*
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.