libs/guest: Set console page to disconnected

Initialize xencons_interface's connection field to
XENCONSOLE_DISCONNECTED.  xenconsoled will mark the page as connected
when it establishes the connection.

Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Release-Acked-By: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Anthony PERARD <anthony.perard@vates.tech>
This commit is contained in:
Jason Andryuk authored and Anthony PERARD committed 2025-10-03 15:50:32 +02:00
1 parent ddc2dd1264
commit 971b7d5ecb
4 files changed
+26 -4

No files matched your search

+2
View File
@@ -335,6 +335,8 @@ void *xc_dom_boot_domU_map(struct xc_dom_image *dom, xen_pfn_t pfn,
xen_pfn_t count);
int xc_dom_boot_image(struct xc_dom_image *dom);
int xc_dom_compat_check(struct xc_dom_image *dom);
int xc_dom_console_init(xc_interface *xch, uint32_t guest_domid,
xen_pfn_t console_gfn);
int xc_dom_gnttab_init(struct xc_dom_image *dom);
int xc_dom_gnttab_seed(xc_interface *xch, uint32_t guest_domid,
bool is_hvm,
+1 -1
View File
@@ -70,7 +70,7 @@ static int alloc_magic_pages(struct xc_dom_image *dom)
dom->xenstore_pfn = base + XENSTORE_PFN_OFFSET;
dom->vuart_gfn = base + VUART_PFN_OFFSET;
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_pfn);
xc_dom_console_init(dom->xch, dom->guest_domid, dom->console_pfn);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_pfn);
xc_clear_domain_page(dom->xch, dom->guest_domid, base + MEMACCESS_PFN_OFFSET);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->vuart_gfn);
+20
View File
@@ -34,6 +34,7 @@
#include "xg_core.h"
#include <xen/hvm/params.h>
#include <xen/grant_table.h>
#include <xen/io/console.h>
/* ------------------------------------------------------------------------ */
@@ -427,6 +428,25 @@ int xc_dom_gnttab_init(struct xc_dom_image *dom)
dom->console_domid, dom->xenstore_domid);
}
int xc_dom_console_init(xc_interface *xch,
uint32_t domid,
unsigned long dst_pfn)
{
const size_t size = PAGE_SIZE;
struct xencons_interface *xencons = xc_map_foreign_range(
xch, domid, size, PROT_WRITE, dst_pfn);
if ( xencons == NULL )
return -1;
memset(xencons, 0, size);
xencons->connection = XENCONSOLE_DISCONNECTED;
munmap(xencons, size);
xc_domain_cacheflush(xch, domid, dst_pfn, 1);
return 0;
}
/*
* Local variables:
* mode: C
+3 -3
View File
@@ -587,8 +587,8 @@ static int alloc_magic_pages_pv(struct xc_dom_image *dom)
dom->console_pfn = xc_dom_alloc_page(dom, "console");
if ( dom->console_pfn == INVALID_PFN )
return -1;
xc_clear_domain_page(dom->xch, dom->guest_domid,
xc_dom_p2m(dom, dom->console_pfn));
xc_dom_console_init(dom->xch, dom->guest_domid,
xc_dom_p2m(dom, dom->console_pfn));
dom->alloc_bootstack = 1;
@@ -734,7 +734,7 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
special_pfn(SPECIALPAGE_IDENT_PT) << PAGE_SHIFT);
dom->console_pfn = special_pfn(SPECIALPAGE_CONSOLE);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_pfn);
xc_dom_console_init(dom->xch, dom->guest_domid, dom->console_pfn);
dom->xenstore_pfn = special_pfn(SPECIALPAGE_XENSTORE);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_pfn);
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.