[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/6] tools/console: use xenforeigmemory to map console ring
- To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
- Date: Fri, 17 Sep 2021 17:46:22 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=P6No9nF8vaLlLWVxNdu1JhmKZDYGo8kkft5wXq/DnGc=; b=QZOm5UlHuVOLtEtJyTtlGa6rhHTP+M3FYYIJ92lj1DaXjxKWYIefz6e6MAmfH70Ng3nxu9968dKiyFlDkAgXD3jNw1I3n74YgKn3eQs1fBqQCSZaA5PaZfNup5fAG26ehJtdoaOFstdP23nxBXluzi+5lrtxe6PfiAcZwVTT2lDxanGgwWGFprFqM8vDn/XnwmFqCeHkwR9p9ii3PdufJ9efzQs6o5O2Ig/jDjvbsQMA8H/NkHB8XDLhW88mN+PZznToBDgujmf2QYC9sLPWe8rfC4kLghribmMW1tlaLZKTsxREm402PQaR9+55aBK/uQyAxNLw7PrShY5/EZsW7Q==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YrfTnXCmYWfM+R0x/MdNBensOUWNPuBdEmzcz4b3LAgSH1udHnWKDMrCu1BG5WSSSs9rgA7unc+BFtgRpsF1OhsmtDIzm45G3L21O1k5nf0aVx9PN9n/zyRPYCp2Xz7l7sQhnxXtTxpRLWUZjReoXfM2fiiDq0FY+8Qv1JpSAOkH4y0s5pv0P2NFWkj4BdQTPoUAsBVH7OebrRAeNNsfIstxPOdQxMJ/s7J7Fsx/eC95cziM5kDXhd8BR2kSkqtqinoVYi2g+Spj1GoELzWF6FOPL5H9X6Tq5QZOj2R1MYJqNRD41+0vPZZ1UJNCo34Lev+5KzegKhXKomrW7UszOw==
- Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
- Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
- Delivery-date: Fri, 17 Sep 2021 15:47:00 +0000
- Ironport-data: A9a23:kVrkTq0Wkh0LjcACBvbD5eZ2kn2cJEfYwER7XKvMYLTBsI5bpzJRy 2IeDW/Ta/+PMGP1Kd8gbIzjoxlX7ZDVmoBrSAJvpC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan0ZqTNMEn970EoywrFh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhso0yx oVrn7WLSDgUb+7Rut4cQwEFKnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6DiuIQEhW9h3ZAm8fD2R Jc8bQt3cx36bTpqfQxOEIIat+KHvyyqG9FfgA3M/vdmi4TJ9yRu1JD9PdyTfcaFLe1UgUSwt m/A537+ABwRKJqY0zXt2mKhgKrDkD32XKoWFaak7bh6jVuL3GsRBRYKE1yhrpGEZlWWAowFb RZOo2x38PZ0pBfDosTBswOQjSPHsE46cfNrEtIHuUKQ6JDV8x7EPz1RJtJeU+DKpPPaVBRzi ATQz4i4VGQ12FGGYSnCrebP9FteLQBQdDVbNHFeFWPp9vG++Nlbs/7Zcjp0/EdZZPXOEDfsy nihqCEkjt3/ZuZaiv3moTgrb9+qz6UlrzLZBC2MBQpJDSsjPeZJgrBEDnCBtp59wH6xFAXpg ZT9s5H2ABoy4XSxeMulG75lIV1Uz6zdbG20baBHRsF8n9hSx5JTVd8Ju2wvTKuYGu0FZSXoc CfuVfB5vcQIVEZGmZRfOtrrY+xzlPCIPY28Cpj8M4ofCrAsJVTv1Hw/OiatM5XFzRFEfVcXY szAL65BzB8yVMxa8dZBb71MieN0nn9umzy7qFKS503P7IdyrUW9EN8tGFCPcvo4/OWDpgDU+ MxYLMyE11NUV+iWX8Ud2dR7wYkiISdpCJbohdZQc+LfcANqFHt4U63awK87epwjlKNQz7+a8 na4U05e6Vz+mXyYdlnaNiE9MOviDcRlsHY2HS0wJlL0iXItVpmisfUEfJwtcLh5qOE6laxoT +MIctmrC+hUTmiV4CwUaJTw9dQwdBmiiQ+UETCiZTwzI8xpSwDTo4e2dQrz7igeSCGwsJJm8 bGn0wraR7sFRhhjU5mKOK7+kQvpsCFEyuxoXkbOLt1CQ2nW8dBne37rk/s6A8AQMhGflDGU4 BmbXEUDru7Xro5rrNSQ3fKYr52kGvdVF1ZBGzWJ9q6/MCTX8zbxwYJEV+rULznRWHmtpfenb ORRifr9LOcGjBBBtI8lS+Rnyqc35t3Oob5Gz1s7QCWXPgrzUr4wcGOb2cRvt7FWwu4LsAS7b UuD591GNOjbI8jiClMQeFIoY+nrOSv4QdUOASDZ+HnH2RI=
- Ironport-hdrordr: A9a23:SBrV2azKQmuU5hfoH25pKrPxv+skLtp133Aq2lEZdPULSKKlfp GV88jziyWZtN9wYhEdcdDpAtjmfZq6z+8L3WBxB8bfYOCCggqVxe5ZnPLfKlHbakjDH6tmpN 1dmstFea3N5DpB/L7HCWCDer5KqrT3k9HL9JTjJjVWPHxXgslbnnZE422gYytLrWd9dP4E/M 323Ls4m9PsQwVaUu2LQl0+G8TTrdzCk5zrJTYAGh4c8QGLyRel8qTzHRS01goXF2on+8ZtzU H11yjCoomzufCyzRHRk0fV8pRtgdPkjv9OHtaFhMQ5IijlziyoeINicbufuy1dmpDh1H8a1P 335zswNcV67H3cOkmzvBvWwgHllA0j7nfzoGXoykfLkIjcfnYXGsBBjYVWfl/y8Ew7puxx16 pNwiawq4dXJQmoplW/2/H4EzVR0makq3srluAey1ZFV5EFVbNXpYsDuGtIDZY7Gj7g4oxPKp gvMCjl3ocSTbqmVQGcgoE2q+bcGUjbXy32A3Tqg/blkQS/xxtCvg0lLM92pAZJyHtycegc2w xoWp4Y442mdfVmGJ6VMt1xCPdfOla9My4kD1jiVWgPbJt3QE4li6SHqondt9vaNaDh8vMJ6e L8uRVjxDYPR34=
- Ironport-sdr: pOxK3cjNsiCcsVk2qd0VoLNGC3qVs7nlM9GbjU0ETwP5mjDbCqV4JndzjiUQ9sCu1dJf8NRvfS bmB81hJyPB3xxKTJyfjU5PbYQbPfr1X210I0Ri+ExKC6P0c57RtfjXgwcT7j1TjJI4RFJYv89Y 54j6Wgzbmzgf1p11pR3c6SmAAo6rt7ti2eXq7Klo7QPwaKEtXNLOR1mBC1sOObscD0R2QlQxxq 5izpWvDR8FZNK/x+9xz3ZJoo3AQvauD8UZZ9bZrJlowkLg4LtUCYyWaXj+lu6fWNu+62GlsHQ3 c1/dATSiksu3SMK7tcCb78VC
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
This patch replaces the usage of xc_map_foreign_range with
xenforeignmemory_map from the stable xenforeignmemory library. Note
there are still other uses of libxc functions which prevents removing
the dependency.
No functional change intended.
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
tools/console/Makefile | 4 ++--
tools/console/daemon/io.c | 25 ++++++++++++++++++++-----
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/tools/console/Makefile b/tools/console/Makefile
index 84796eac8f..3f4cddab03 100644
--- a/tools/console/Makefile
+++ b/tools/console/Makefile
@@ -29,9 +29,9 @@ clean:
distclean: clean
daemon/main.o: daemon/_paths.h
-daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab)
$(CONSOLE_CFLAGS-y)
+daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab)
$(CFLAGS_libxenforeignmemory) $(CONSOLE_CFLAGS-y)
xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c))
- $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn)
$(LDLIBS_libxengnttab) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS)
+ $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn)
$(LDLIBS_libxengnttab) $(LDLIBS_libxenforeignmemory) $(LDLIBS_xenconsoled)
$(APPEND_LDFLAGS)
client/main.o: client/_paths.h
xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c))
diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
index 200b575d76..682c1f4008 100644
--- a/tools/console/daemon/io.c
+++ b/tools/console/daemon/io.c
@@ -22,6 +22,7 @@
#include "utils.h"
#include "io.h"
#include <xenevtchn.h>
+#include <xenforeignmemory.h>
#include <xengnttab.h>
#include <xenstore.h>
#include <xen/io/console.h>
@@ -73,6 +74,7 @@ static int log_time_guest_needts = 1;
static int log_hv_fd = -1;
static xengnttab_handle *xgt_handle = NULL;
+static xenforeignmemory_handle *xfm_handle;
static struct pollfd *fds;
static unsigned int current_array_size;
@@ -675,7 +677,7 @@ static void console_unmap_interface(struct console *con)
if (xgt_handle && con->ring_ref == -1)
xengnttab_unmap(xgt_handle, con->interface, 1);
else
- munmap(con->interface, XC_PAGE_SIZE);
+ xenforeignmemory_unmap(xfm_handle, con->interface, 1);
con->interface = NULL;
con->ring_ref = -1;
}
@@ -722,11 +724,12 @@ static int console_create_ring(struct console *con)
con->ring_ref = -1;
}
if (!con->interface) {
+ xen_pfn_t pfn = ring_ref;
+
/* Fall back to xc_map_foreign_range */
- con->interface = xc_map_foreign_range(
- xc, dom->domid, XC_PAGE_SIZE,
- PROT_READ|PROT_WRITE,
- (unsigned long)ring_ref);
+ con->interface = xenforeignmemory_map(
+ xfm_handle, dom->domid, PROT_READ|PROT_WRITE, 1,
+ &pfn, NULL);
if (con->interface == NULL) {
err = EINVAL;
goto out;
@@ -1341,6 +1344,14 @@ void handle_io(void)
errno, strerror(errno));
}
+ xfm_handle = xenforeignmemory_open(NULL, 0);
+ if (xfm_handle == NULL) {
+ dolog(LOG_ERR,
+ "Failed to open xen foreign memory handle: %d (%s)",
+ errno, strerror(errno));
+ goto out;
+ }
+
enum_domains();
for (;;) {
@@ -1462,6 +1473,10 @@ void handle_io(void)
xengnttab_close(xgt_handle);
xgt_handle = NULL;
}
+ if (xfm_handle != NULL) {
+ xenforeignmemory_close(xfm_handle);
+ xfm_handle = NULL;
+ }
log_hv_evtchn = -1;
}
--
2.33.0
|