Gerd Hoffmann
2009-Jun-02 07:05 UTC
[Xen-devel] [PATCH] xen: net backend doesn''t need linux headers.
Drop them to make qemu build on OpenSolaris. Cc: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- hw/xen_nic.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/hw/xen_nic.c b/hw/xen_nic.c index 8abe319..1d91e62 100644 --- a/hw/xen_nic.c +++ b/hw/xen_nic.c @@ -33,8 +33,6 @@ #include <sys/stat.h> #include <sys/mman.h> #include <sys/wait.h> -#include <linux/if.h> -#include <linux/if_tun.h> #include <xs.h> #include <xenctrl.h> -- 1.6.2.2 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Blue Swirl
2009-Jun-06 15:52 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: net backend doesn''t need linux headers.
On 6/2/09, Gerd Hoffmann <kraxel@redhat.com> wrote:> Drop them to make qemu build on OpenSolaris. > > Cc: Andreas Färber <andreas.faerber@web.de> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>Thanks, applied. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Andreas Färber
2009-Jun-06 19:43 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: net backend doesn''t need linux headers.
Am 06.06.2009 um 17:52 schrieb Blue Swirl:> On 6/2/09, Gerd Hoffmann <kraxel@redhat.com> wrote: >> Drop them to make qemu build on OpenSolaris. >> >> Cc: Andreas Färber <andreas.faerber@web.de> >> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > Thanks, applied.Thanks, the patch helps, but doesn''t fully fix the build: CC xen_backend.o CC xen_devconfig.o CC xen_console.o CC xenfb.o CC xen_disk.o In file included from /export/home/andreas/QEMU/qemu/hw/xen_disk.c:43: /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:20: warning: #pragma pack(push[, id], <n>) is not supported on this target /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:36: warning: #pragma pack(pop[, id], <n>) is not supported on this target CC xen_nic.o /export/home/andreas/QEMU/qemu/hw/xen_nic.c: In function `net_tx_packets'': /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: `PAGE_SIZE'' undeclared (first use in this function) /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: (Each undeclared identifier is reported only once /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: for each function it appears in.) make: *** [xen_nic.o] Error 1 A quick search for PAGE_SIZE revealed some posts saying that PAGE_SIZE shouldn''t be used in userland and be replaced with getpagesize(). Looking at the code though I see a number of XC_PAGE_SIZE that don''t result in errors. Might PAGE_SIZE be a typo then? Andreas _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Andreas Färber
2009-Jun-06 20:51 UTC
Re: [PATCH] xen: net backend doesn''t need linux headers.
Am 06.06.2009 um 21:43 schrieb Andreas Färber:> > Am 06.06.2009 um 17:52 schrieb Blue Swirl: > >> On 6/2/09, Gerd Hoffmann <kraxel@redhat.com> wrote: >>> Drop them to make qemu build on OpenSolaris. >>> >>> Cc: Andreas Färber <andreas.faerber@web.de> >>> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> >> >> Thanks, applied. > > Thanks, the patch helps, but doesn''t fully fix the build: > > CC xen_backend.o > CC xen_devconfig.o > CC xen_console.o > CC xenfb.o > CC xen_disk.o > In file included from /export/home/andreas/QEMU/qemu/hw/xen_disk.c:43: > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:20: warning: #pragma > pack(push[, id], <n>) is not supported on this target > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:36: warning: #pragma > pack(pop[, id], <n>) is not supported on this target > CC xen_nic.o > /export/home/andreas/QEMU/qemu/hw/xen_nic.c: In function > `net_tx_packets'': > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: `PAGE_SIZE'' > undeclared (first use in this function) > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: (Each > undeclared identifier is reported only once > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: for each > function it appears in.) > make: *** [xen_nic.o] Error 1 > > A quick search for PAGE_SIZE revealed some posts saying that > PAGE_SIZE shouldn''t be used in userland and be replaced with > getpagesize(). Looking at the code though I see a number of > XC_PAGE_SIZE that don''t result in errors. Might PAGE_SIZE be a typo > then?With this patch xen_nic.c compiles: diff --git a/hw/xen_nic.c b/hw/xen_nic.c index 048d865..3615c8c 100644 --- a/hw/xen_nic.c +++ b/hw/xen_nic.c @@ -176,7 +176,7 @@ static void net_tx_packets(struct XenNetDev *netdev) if (txreq.flags & NETTXF_csum_blank) { /* have read-only mapping -> can''t fill checksum in- place */ if (!tmpbuf) - tmpbuf = malloc(PAGE_SIZE); + tmpbuf = malloc(XC_PAGE_SIZE); memcpy(tmpbuf, page + txreq.offset, txreq.size); net_checksum_calculate(tmpbuf, txreq.size); qemu_send_packet(netdev->vs, tmpbuf, txreq.size); If then goes on to compile Xen stuff into sparc-softmmu and fails: CC sparc-softmmu/xen_machine_pv.o /export/home/andreas/QEMU/qemu/hw/xen_machine_pv.c:116: warning: initialization from incompatible pointer type CC sparc-softmmu/xen_domainbuild.o [...] LINK sparc-softmmu/qemu-system-sparc Undefined first referenced symbol in file xc_gnttab_map_grant_refs ../libqemu_common.a(xen_disk.o) xc_gnttab_map_grant_ref ../libqemu_common.a(xen_disk.o) xc_gnttab_munmap ../libqemu_common.a(xen_disk.o) xc_gnttab_open ../libqemu_common.a(xen_backend.o) ld: fatal: symbol referencing errors. No output written to qemu-system- sparc collect2: ld returned 1 exit status gmake[1]: *** [qemu-system-sparc] Error 1 make: *** [subdir-sparc-softmmu] Error 2 Same errors when linking i386-softmmu. OpenSolaris 2009.06 has SUNWxvm@3.1,5.11-111, I interpret this as being Xen 3.1 - is that maybe too old? Perhaps it''s easier to just have QEMU''s configure disable Xen support on Solaris for now then? Andreas
Blue Swirl
2009-Jun-07 06:56 UTC
Re: [PATCH] xen: net backend doesn''t need linux headers.
On 6/6/09, Andreas Färber <andreas.faerber@web.de> wrote:> > Am 06.06.2009 um 21:43 schrieb Andreas Färber: > > > > > > > Am 06.06.2009 um 17:52 schrieb Blue Swirl: > > > > > > > On 6/2/09, Gerd Hoffmann <kraxel@redhat.com> wrote: > > > > > > > Drop them to make qemu build on OpenSolaris. > > > > > > > > Cc: Andreas Färber <andreas.faerber@web.de> > > > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > > > > > > > > > > Thanks, applied. > > > > > > > Thanks, the patch helps, but doesn''t fully fix the build: > > > > CC xen_backend.o > > CC xen_devconfig.o > > CC xen_console.o > > CC xenfb.o > > CC xen_disk.o > > In file included from > /export/home/andreas/QEMU/qemu/hw/xen_disk.c:43: > > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:20: > warning: #pragma pack(push[, id], <n>) is not supported on this target > > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:36: > warning: #pragma pack(pop[, id], <n>) is not supported on this target > > CC xen_nic.o > > /export/home/andreas/QEMU/qemu/hw/xen_nic.c: In function > `net_tx_packets'': > > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: > `PAGE_SIZE'' undeclared (first use in this function) > > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: > (Each undeclared identifier is reported only once > > /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: > for each function it appears in.) > > make: *** [xen_nic.o] Error 1 > > > > A quick search for PAGE_SIZE revealed some posts saying that PAGE_SIZE > shouldn''t be used in userland and be replaced with getpagesize(). Looking at > the code though I see a number of XC_PAGE_SIZE that don''t result in errors. > Might PAGE_SIZE be a typo then? > > > > With this patch xen_nic.c compiles: > > diff --git a/hw/xen_nic.c b/hw/xen_nic.c > index 048d865..3615c8c 100644 > --- a/hw/xen_nic.c > +++ b/hw/xen_nic.c > @@ -176,7 +176,7 @@ static void net_tx_packets(struct XenNetDev *netdev) > if (txreq.flags & NETTXF_csum_blank) { > /* have read-only mapping -> can''t fill checksum in-place */ > if (!tmpbuf) > - tmpbuf = malloc(PAGE_SIZE); > + tmpbuf = malloc(XC_PAGE_SIZE); > memcpy(tmpbuf, page + txreq.offset, txreq.size); > net_checksum_calculate(tmpbuf, txreq.size); > qemu_send_packet(netdev->vs, tmpbuf, txreq.size);It also looks like there is no real need for using host or target page size, so we could use for example MIN(4096, txreq.size).> If then goes on to compile Xen stuff into sparc-softmmu and fails: > > CC sparc-softmmu/xen_machine_pv.o > /export/home/andreas/QEMU/qemu/hw/xen_machine_pv.c:116: > warning: initialization from incompatible pointer type > CC sparc-softmmu/xen_domainbuild.o > [...] > LINK sparc-softmmu/qemu-system-sparc > Undefined first referenced > symbol in file > xc_gnttab_map_grant_refs > ../libqemu_common.a(xen_disk.o) > xc_gnttab_map_grant_ref > ../libqemu_common.a(xen_disk.o) > xc_gnttab_munmap > ../libqemu_common.a(xen_disk.o) > xc_gnttab_open > ../libqemu_common.a(xen_backend.o) > ld: fatal: symbol referencing errors. No output written to > qemu-system-sparc > collect2: ld returned 1 exit status > gmake[1]: *** [qemu-system-sparc] Error 1 > make: *** [subdir-sparc-softmmu] Error 2 > > Same errors when linking i386-softmmu. > > OpenSolaris 2009.06 has SUNWxvm@3.1,5.11-111, I interpret this as being Xen > 3.1 - is that maybe too old? > Perhaps it''s easier to just have QEMU''s configure disable Xen support on > Solaris for now then?configure should probe for xc_gnttab symbols and disable Xen if these are not found.
Gerd Hoffmann
2009-Jun-08 07:00 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: net backend doesn''t need linux headers.
On 06/06/09 21:43, Andreas Färber wrote:> In file included from /export/home/andreas/QEMU/qemu/hw/xen_disk.c:43: > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:20: warning: #pragma > pack(push[, id], <n>) is not supported on this target > /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:36: warning: #pragma > pack(pop[, id], <n>) is not supported on this target > CC xen_nic.oHmm, is this a x86 or sparc machine?> /export/home/andreas/QEMU/qemu/hw/xen_nic.c:179: error: `PAGE_SIZE'' > undeclared (first use in this function)> Looking at the code though I see a number of XC_PAGE_SIZE that don''t > result in errors. Might PAGE_SIZE be a typo then?Yes, XC_PAGE_SIZE should be used here. cheers, Gerd _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Gerd Hoffmann
2009-Jun-08 07:14 UTC
Re: [Qemu-devel] [PATCH] xen: net backend doesn''t need linux headers.
On 06/07/09 08:56, Blue Swirl wrote:>> - tmpbuf = malloc(PAGE_SIZE); >> + tmpbuf = malloc(XC_PAGE_SIZE);> It also looks like there is no real need for using host or target page > size, so we could use for example MIN(4096, txreq.size).No. XC_PAGE_SIZE is the max buffer size. As the buffer allocated here could be resused for multiple packets you''ll have to use that, otherwise you''ll overflow the buffer in case the second packet is larger than the first one.>> If then goes on to compile Xen stuff into sparc-softmmu and fails:Hmm, it shouldn''t try that in the first place. Guess this is the result of this commit: http://git.savannah.gnu.org/cgit/qemu.git/commit/?id=2567f5796c38238d6f2055f074e347a0338140ce>> xc_gnttab_open >> collect2: ld returned 1 exit status >> Same errors when linking i386-softmmu.For i386-softmmu it should work.> configure should probe for xc_gnttab symbols and disable Xen if these > are not found.Strange. configure checks for xc_interface_open. Both xc_interface_open and xc_gnttab_open are in the same shared library. So it should work in theory, dunno what the problem here is. Hmm, the linker complains about xc_gnttab_* only, not about the other xc_* functions missing. Maybe solaris simply has no support for them? cheers, Gerd
Andreas Färber
2009-Jun-13 12:30 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH] xen: net backend doesn''t need linux headers.
Am 08.06.2009 um 09:00 schrieb Gerd Hoffmann:> On 06/06/09 21:43, Andreas Färber wrote: >> In file included from /export/home/andreas/QEMU/qemu/hw/xen_disk.c: >> 43: >> /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:20: warning: #pragma >> pack(push[, id], <n>) is not supported on this target >> /export/home/andreas/QEMU/qemu/hw/xen_blkif.h:36: warning: #pragma >> pack(pop[, id], <n>) is not supported on this target >> CC xen_nic.o > > Hmm, is this a x86 or sparc machine?x86 (amd64) Andreas _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel