Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Mar 2018 07:11:26 -0800 (PST)
From:      "Rodney W. Grimes" <freebsd-rwg@pdx.rh.CN85.dnsmgr.net>
To:        Ludovit Koren <ludovit.koren@gmail.com>
Cc:        Andriy Gapon <avg@FreeBSD.org>, freebsd-virtualization@FreeBSD.org
Subject:   Re: bhyve - windows7 installation
Message-ID:  <201803021511.w22FBQbf030531@pdx.rh.CN85.dnsmgr.net>
In-Reply-To: <86woyvgd3v.fsf@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> >>>>> Andriy Gapon <avg@FreeBSD.org> writes:
> 
>     > On 01/03/2018 16:06, Rodney W. Grimes wrote:
>     >> Due to the design of the IOMMU you can only manage IO space in page
>     >> (4096 on x86) granually sizes.  The device your trying to pass in
>     >> has a 1024 byte memory region that is part of a 4096 byte page that
>     >> may have other things in it.
>     >> 
>     >> At this time bhyve does not have any way to deal with this, though some
>     >> other hypervisors have techniques that make this work.
>     >> 
>     >> I do not have or know of any list of USB controller cards that
>     >> have 4k aligned and 4k sized BAR's.
> 
>     > I have this local hack for that problem.
>     > It comes without any warranty and its use is completely at your own risk.
> 
> Thank you. I will try it.

Andriy,
Thanks for providing this patch, I tried to find the repository
it is in with google and did not, is this a private repository?

Either way would it be ok with you if I published, with attribution
of cource, your patch first from my people.freebsd.org/~rgrimes#bhyve
page, and possibly later from a wiki page?  I'll properly dress it
in "this has security implications" and enumerate what those are.

Thanks,

> lk
> 
>     > commit 74e0a8d1ae01c7aaabd7d965958b735c7cf18871
>     > Author: Andriy Gapon <avg@icyb.net.ua>
>     > Date:   Fri Nov 17 20:17:57 2017 +0200
> 
>     >     bhyve: allow BAR sizes that are not page aligned by rounding them up
> 
>     >     This is based on the assumption that drivers won't access the added space.
> 
>     > diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c
>     > index f314679d912b0..14c1384c6c8f8 100644
>     > --- a/usr.sbin/bhyve/pci_passthru.c
>     > +++ b/usr.sbin/bhyve/pci_passthru.c
>     > @@ -563,13 +563,20 @@ cfginitbar(struct vmctx *ctx, struct passthru_softc *sc)
>     >  		size = bar.pbi_length;
> 
>     >  		if (bartype != PCIBAR_IO) {
>     > -			if (((base | size) & PAGE_MASK) != 0) {
>     > +			if ((base & PAGE_MASK) != 0) {
>     >  				warnx("passthru device %d/%d/%d BAR %d: "
>     > -				    "base %#lx or size %#lx not page aligned\n",
>     > +				    "base %#lx not page aligned\n",
>     sc-> psc_sel.pc_bus, sc->psc_sel.pc_dev,
>     > -				    sc->psc_sel.pc_func, i, base, size);
>     > +				    sc->psc_sel.pc_func, i, base);
>     >  				return (-1);
>     >  			}
>     > +			if ((size & PAGE_MASK) != 0) {
>     > +				warnx("passthru device %d/%d/%d BAR %d: "
>     > +				    "size %#lx not page aligned\n",
>     > +				    sc->psc_sel.pc_bus, sc->psc_sel.pc_dev,
>     > +				    sc->psc_sel.pc_func, i, size);
>     > +				size = round_page(size);
>     > +			}
>     >  		}
> 
>     >  		/* Cache information about the "real" BAR */
> 
> 
>     > -- 
>     > Andriy Gapon
> 
> 
> -- 
> A: Because it fouls the order in which people normally read text.
> Q: Why is top-posting such a bad thing?

Sorry for the middle posting :-)

> A: Top-posting.
> Q: What is the most annoying thing on usenet and in e-mail? 

-- 
Rod Grimes                                                 rgrimes@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803021511.w22FBQbf030531>