From owner-freebsd-virtualization@freebsd.org Wed Apr 3 23:41:47 2019 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1FD7615592FE for ; Wed, 3 Apr 2019 23:41:47 +0000 (UTC) (envelope-from crowston@protonmail.com) Received: from mail-40132.protonmail.ch (mail-40132.protonmail.ch [185.70.40.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.protonmail.ch", Issuer "SwissSign Server Silver CA 2014 - G22" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8E736728DF for ; Wed, 3 Apr 2019 23:41:45 +0000 (UTC) (envelope-from crowston@protonmail.com) Date: Wed, 03 Apr 2019 23:41:36 +0000 To: Ruslan Bukin From: Robert Crowston Cc: "freebsd-virtualization@freebsd.org" Reply-To: Robert Crowston Subject: Re: GPU passthrough: mixed success on Linux, not yet on Windows Message-ID: In-Reply-To: <20190328220234.GA52232@bsdpad.com> References: <20190328220234.GA52232@bsdpad.com> Feedback-ID: 2OVbcR1yHYpdkD8cgQllkFwcuMVZg_LiVMMPvptooFDfHD_03MuQO4ZaF626jWHZYFEhNR2cmIbZ53j4QGWMBQ==:Ext:ProtonMail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=7.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.protonmail.ch X-Rspamd-Queue-Id: 8E736728DF X-Spamd-Bar: ------- X-Spamd-Result: default: False [-7.83 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; HAS_REPLYTO(0.00)[crowston@protonmail.com]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:185.70.40.0/24]; FREEMAIL_FROM(0.00)[protonmail.com]; DKIM_TRACE(0.00)[protonmail.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[protonmail.com,quarantine]; MX_GOOD(-0.01)[cached: mailsec.protonmail.ch]; NEURAL_HAM_SHORT(-0.96)[-0.965,0]; RCVD_COUNT_ZERO(0.00)[0]; FROM_EQ_ENVFROM(0.00)[]; IP_SCORE(-3.76)[ip: (-9.89), ipnet: 185.70.40.0/24(-4.90), asn: 19905(-3.92), country: US(-0.06)]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[protonmail.com]; ASN(0.00)[asn:19905, ipnet:185.70.40.0/24, country:US]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[132.40.70.185.list.dnswl.org : 127.0.5.1]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[protonmail.com:s=default]; REPLYTO_EQ_FROM(0.00)[]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; FREEMAIL_REPLYTO(0.00)[protonmail.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Apr 2019 23:41:47 -0000 To get Windows to boot I think the only hacks I needed were in bhyve/mem.c = (this is not production ready!) Diff'd against 12.0-release -- /tmp//sh-np.vFXFJd 2019-04-04 00:29:32.752990000 +0100 +++ mem.c 2019-03-02 22:27:14.500906000 +0000 @@ -101,20 +101,22 @@ } static int -mmio_rb_add(struct mmio_rb_tree *rbt, struct mmio_rb_range *new) +mmio_rb_add(struct mmio_rb_tree *rbt, struct mmio_rb_range *new_element) { struct mmio_rb_range *overlap; - overlap =3D RB_INSERT(mmio_rb_tree, rbt, new); + overlap =3D RB_INSERT(mmio_rb_tree, rbt, new_element); + printf("mmio_rb_add: %lx:%lx\n", new_element->mr_base, new_element-= >mr_end); + if (overlap !=3D NULL) { -#ifdef RB_DEBUG - printf("overlap detected: new %lx:%lx, tree %lx:%lx\n", - new->mr_base, new->mr_end, +//#ifdef RB_DEBUG + printf("overlap detected: new_element %lx:%lx, tree %lx:%lx= \n", + new_element->mr_base, new_element->mr_end, overlap->mr_base, overlap->mr_end); -#endif +//#endif - return (EEXIST); +// return (EEXIST); } return (0); @@ -336,6 +338,8 @@ assert((mr->flags & MEM_F_IMMUTABLE) =3D=3D 0); RB_REMOVE(mmio_rb_tree, &mmio_rb_root, entry); + printf("unregister: %lx:%lx\n", mr->base, mr->base+mr->size= ); + /* flush Per-vCPU cache */ for (i=3D0; i < VM_MAXCPU; i++) { if (mmio_hint[i] =3D=3D entry) @@ -348,7 +352,12 @@ if (entry) free(entry); - return (err); + if (err) + fprintf( stderr, "Unregister mem errno %d for range %lx:%lx= .\n", err, + memp->base, memp->base + memp->size ); + + return 0; + //return (err); } =E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90 Original Me= ssage =E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90 On Thursday, 28 March 2019 22:02, Ruslan Bukin wrote: > Hi Robert: > > On Sun, Mar 17, 2019 at 04:22:29PM +0000, Robert Crowston via freebsd-vir= tualization wrote: > > > Is it worth me continuing to hack away at these problems---of course I'= m happy to share anything I come up with---or is there an official solution= to GPU support in the pipe about to make my efforts redundant :)? > > Could you share your patch/hacks somewhere? > I would like to try it with AMD graphics card and Windows. > > Ruslan