[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Fwd: RE: [Xen-devel] Fwd: Need help - Assigning PCI device to HVM Windows domain]



 

> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Andrew D. Ball
> Sent: 16 November 2006 15:44
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Fwd: RE: [Xen-devel] Fwd: Need help - Assigning PCI 
> device to HVM Windows domain]
> 
> -------- Forwarded Message --------
> From: Andrew D. Ball <aball@xxxxxxxxxxxxxxxxxx>
> Reply-To: aball@xxxxxxxxxxxxxxxxxx
> To: Petersson, Mats <Mats.Petersson@xxxxxxx>
> Subject: RE: [Xen-devel] Fwd: Need help - Assigning PCI device to HVM
> Windows domain
> Date: Thu, 16 Nov 2006 10:43:48 -0500
> 
> For the IOMMU stuff, I wonder how far along the Calgary support is in
> Xen.  Granted, the Intel and AMD versions will become ubiquitous and
> Calgary almost certainly will not ...  Also tricks available 
> with stuff
> like AGP apertures, right?

Sure, there is some work ongoing for Calgary (according to Muli), but
that is primarily targetted towards PV domains rather than HVM domains. 

I think Mark Langsdorf has been owkring on GART-based IOMMU, but I don't
know what the status is on this...

I don't know when ours or Intels hardware will be available (I hope
sooner rather than later, because it will solve a whole bunch of peoples
problems...)

--
Mats
> 
> Peace.
> Andrew
> 
> On Thu, 2006-11-16 at 11:50 +0100, Petersson, Mats wrote:
> > This will not work!
> > 
> > The reason is that we tell Windows that it's got X MB of memory,
> > starting at address 0, like it does in a standalone system. But in
> > reality, the memory actually given to the virtual machine 
> could be ANY
> > location in memory (including a completely scattered 
> selection of memory
> > blocks). 
> > 
> > Since Windows is COMPLETELY unaware of this fact, your 
> driver will give
> > what it believes is the physical address, in the range of 
> 0..X MB to the
> > network card when it wants to send a packet of data. This 
> is of course
> > not going to work if the packet to send isn't at the 
> physical address
> > Windows thinks it is. 
> > 
> > Let's take a trivial example: We give Windows a memory size 
> of 256MB,
> > located in the contiguous section 256..512MB. The OS then 
> wants to send
> > a packet on the network card that has the virtual address 
> of 0x40867456
> > and the physical address of 0x123456 (just over 1MB), so 
> the driver gets
> > the address for the packet (0x40867456). It calls the Win32 call
> > GetPhysicalAddress(), it will get back the address that 
> Windows thinks
> > is the physical address, because it doesn't know that we've 
> lied about
> > where the memory is. This means that it will get the 
> address 0x123456.
> > This address should be in the 256MB..512MB range, but it isn't, it's
> > just over 1MB. So the packet sent will be wrong (if the network card
> > just grabs the data and there's no need for some extra 
> "stuff" around
> > the data-packet, in which case the card will just plain refuse to
> > work!). 
> > 
> > There are two solutions: 
> > 1. Implement within the driver for the network card an 
> understanding of
> > the fact that guest-physical memory (i.e. what your Windows 
> OS thinks is
> > physical addresses) and machine physical addresses (those that are
> > ACTUALLY in the machine), by adding an extra layer of 
> translation from
> > guest-physical to machine-physical where the driver is asking for a
> > physical address. Xen nows how to do this, so you should be 
> able to use
> > the para-virtual driver calling mechanism to achieve this, 
> but it does
> > assume that A) You are familiar with windows driver 
> programming, B) that
> > you have source code for the driver(s) involved with your 
> network card
> > and C) that you have a driver development kit (DDK) from MS 
> installed on
> > some machine. 
> > 
> > 2. Wait for IOMMU hardware to be available (and relevant 
> code in Xen) to
> > allow the hypervisor to map the guest-physical memory to
> > machine-physical address translation so that the guest 
> doesn't need to
> > know the difference. 
> > 
> > --
> > Mats
> > 
> > > -----Original Message-----
> > > From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> > > [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of GT
> > > Sent: 16 November 2006 08:30
> > > To: xen-devel@xxxxxxxxxxxxxxxxxxx
> > > Cc: gtcharny@xxxxxxxxx
> > > Subject: [Xen-devel] Fwd: Need help - Assigning PCI device to 
> > > HVM Windows domain
> > > 
> > > I forgot to mention that I allowed MMIO/IO ports access to 
> > > WinXP according 
> > > to NIC's PCI BARs.
> > > 
> > > Thanks,
> > > 
> > > GT
> > > 
> > > ---------- Forwarded message ----------
> > > From: GT <gtcharny@xxxxxxxxx>
> > > Date: Nov 16, 2006 10:21 AM
> > > Subject: Need help - Assigning PCI device to HVM Windows domain
> > > To: xen-devel@xxxxxxxxxxxxxxxxxxx 
> > > <mailto:xen-devel@xxxxxxxxxxxxxxxxxxx> 
> > > 
> > > Hi,
> > > 
> > > I am a newbie to Xen and I am trying to assign PCI NIC to 
> > > Windows domain. I performed below steps, with no luck.
> > > It would be great if someone could point me to the right 
> direction. 
> > > 
> > > I did as follows:
> > > 
> > > 1) I've got WinXP installed over Xen, and got network working 
> > > with pcnet model
> > > 2) I've hidden NIC from dom0 and verified that it does not 
> > > appear with lspci
> > > 3) I've added interception of PCI scan from HVM domain (using 
> > > 0xcf8/0xcfc ports interception), 
> > > and when the PCI bud/dev/fun matched my physical NIC, I 
> > > returned physical vendor/device id.
> > > 4) I've rebuilt/reinstalled all images, but WinXP didn't 
> > > recognize any NIC device.
> > > 
> > > Thanks ahead,
> > > 
> > > GT
> > > 
> > > 
> > > 
> > 
> > 
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 
> 
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.