Re: USB Passthrough 1.1 performance problem...

2010-12-31 Thread Kevin O'Connor
On Tue, Dec 14, 2010 at 12:02:03PM +0200, Avi Kivity wrote:
> That could certainly be optimized.  If the BAR is all along in its
> page, both on guest and host (if not, we can migrate it, at least on
> the host), we can use the same offset within the page on the host as
> it appears on the guest, and assign the entire page.
> 
> We should make sure SeaBIOS uses a minimum alignment of 4k for mmio BARs.

Shouldn't be too hard to do that.

-Kevin


--- a/src/pciinit.c
+++ b/src/pciinit.c
@@ -10,6 +10,7 @@
 #include "biosvar.h" // GET_EBDA
 #include "pci_ids.h" // PCI_VENDOR_ID_INTEL
 #include "pci_regs.h" // PCI_COMMAND
+#include "memmap.h" // PAGE_SIZE
 #include "dev-i440fx.h"
 
 #define PCI_ROM_SLOT 6
@@ -90,6 +91,8 @@ static int pci_bios_allocate_region(u16 bdf, int region_num)
 type = "prefmem";
 msg = "decrease BUILD_PCIMEM_SIZE and recompile. size %x";
 } else {
+if (size < PAGE_SIZE)
+size = PAGE_SIZE;
 r = &pci_bios_mem_region;
 type = "mem";
 msg = "increase BUILD_PCIMEM_SIZE and recompile.";

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-24 Thread Erik Brakkee

Erik Brakkee wrote:

Erik Brakkee wrote:



2010/12/14 Erik Brakkee:

Daniel P. Berrange wrote:

On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:


2010/12/14 Erik Brakkee:


From: Kenni Lund
2010/12/14 Erik Brakkee:


From: Kenni Lund


Does this mean I have a chance now that PCI passthrough of my
WinTV
PVR-500
might work now?


Passthrough of a PVR-500 has been working for a long time. I've
been
running with passthrough of a PVR-500 in my HTPC, since
November/December 2009...so it should work with any recent 
kernel

and
any recent version of qemu-kvm you can find today - No patching
needed. The only issue I had with the PVR-500 card, was when *I*
didn't free up the shared interrupts...once I fixed that, it 
"just

worked".

How did you free up those shared interrupts then? I tried 
different

slots
but always get conflicts with the USB irqs.

I did an unbind of the conflicting device (eg. disabled it). I 
moved

the PVR-500 card around in the different slots and once I got a
conflict with the integrated sound card, I left the PVR-500 
card in

that slot (it's a headless machine, so no need for sound) and
configured unbind of the sound card at boot time. On my old 
system I

think it was conflicting with one of the USB controllers as well,
but
it didn't really matter, as I only lost a few of the ports on the
back
of the computer for that particular USB controller - I still had
plenty of USB ports left and if I really needed more ports, I 
could

just plug in an extra USB PCI card.

My /etc/rc.local boot script looks like the following today:
--
#Remove HDA conflicting with ivtv1
echo ":00:1b.0">   /sys/bus/pci/drivers/HDA\ Intel/unbind

# ivtv0
echo " 0016">   /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:08.0">   /sys/bus/pci/drivers/ivtv/unbind
echo ":04:08.0">   /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">   /sys/bus/pci/drivers/pci-stub/remove_id

# ivtv1
echo " 0016">   /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:09.0">   /sys/bus/pci/drivers/ivtv/unbind
echo ":04:09.0">   /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">   /sys/bus/pci/drivers/pci-stub/remove_id


I did not try unbinding the usb device so I can also try that.

I don'.t understand what is happening with the  0016. I
configured
the
pci card in kvm and I believe kvm does the binding to pci-stub in
recent
versions. Where is the  0016%oming from?


Okay, qemu-kvm might do it today, I don't know - I haven't changed
that script for the past year. But are you sure that it's not
libvirt/virsh/virt-manager which does that for you?


If you use the managed="yes" attribute on the   in libvirt
XML, then libvirt will automatically do the pcistub bind/unbind,
followed by a device reset at guest startup&   the reverse at 
shutdown.

If you have conflicting devices on the bus though, libvirt won't
attempt to unbind them, unless you had also explicitly assigned all
those conflicting devices to the same guest.

Daniel

I definitely have to try again (right now having some stability 
problems

on
the server that I am debugging).

The shared IRQs are as follows:

  16:  0  0  0  0  
0  0

0  0   IO-APIC-fasteoi   uhci_hcd:usb3
  18: 252995  0  0  0  
0  0
0  0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8, 
ivtv0
  19:  58281  0  0  0  
0  0
0  0   IO-APIC-fasteoi   ata_piix, ata_piix, 
uhci_hcd:usb5,

uhci_hcd:usb7, ivtv1
  21:  0  0  0  0  
0  0

0  0   IO-APIC-fasteoi   uhci_hcd:usb4
  23:713   6906  0  76919  
0  0

0  0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6

So I have IRQ sharing with usb1, usb8, usb5, usb7.

Uffand your ata HDD controller. I guess i was much luckier than
you are, my ivtv0 didn't conflict at all and ivtv1 only conflicted
with USB.


I have also read that
ehci refers to USB 2.0 and uhci to USB 1.1 is that correct? Anyway, 
how
would I now identify the USB PCI devices that I would need to 
unbind to

get
rid of the sharing with the USB ports?

Play around with:
lspci -v
lspci -n
lsusb -v
lsusb -t

You can also just start by unbinding the first one and take note when
you hit the right ones...once you unbind one, it will disappear from
cat /proc/interrupts. When you're down to having only ivtv0 on one
interrupt and only ivtv1 on another interrupt, then you're ready to
bind with pci-stub and boot your guest.


It also doesn't really matter in
which slot I put the PVR-500 card because both cards share IRQs 
with USB

in
all cases.

You also have your conflicting ata controller to take into
consideration. I don't remember if "ata_piix" and "ata_piix" is IDE
only, if it is, you might not even use it. Otherwise it might be
easier for you to run qemu-kvm git with the new patches for

Re: USB Passthrough 1.1 performance problem...

2010-12-16 Thread Erik Brakkee

Erik Brakkee wrote:


   

2010/12/14 Erik Brakkee:
 

Daniel P. Berrange wrote:
   

On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:

 

2010/12/14 Erik Brakkee:

   

From: Kenni Lund
2010/12/14 Erik Brakkee:

   

From: Kenni Lund

   

Does this mean I have a chance now that PCI passthrough of my
WinTV
PVR-500
might work now?

 

Passthrough of a PVR-500 has been working for a long time. I've
been
running with passthrough of a PVR-500 in my HTPC, since
November/December 2009...so it should work with any recent kernel
and
any recent version of qemu-kvm you can find today - No patching
needed. The only issue I had with the PVR-500 card, was when *I*
didn't free up the shared interrupts...once I fixed that, it "just
worked".

   

How did you free up those shared interrupts then? I tried different
slots
but always get conflicts with the USB irqs.

 

I did an unbind of the conflicting device (eg. disabled it). I moved
the PVR-500 card around in the different slots and once I got a
conflict with the integrated sound card, I left the PVR-500 card in
that slot (it's a headless machine, so no need for sound) and
configured unbind of the sound card at boot time. On my old system I
think it was conflicting with one of the USB controllers as well,
but
it didn't really matter, as I only lost a few of the ports on the
back
of the computer for that particular USB controller - I still had
plenty of USB ports left and if I really needed more ports, I could
just plug in an extra USB PCI card.

My /etc/rc.local boot script looks like the following today:
--
#Remove HDA conflicting with ivtv1
echo ":00:1b.0">   /sys/bus/pci/drivers/HDA\ Intel/unbind

# ivtv0
echo " 0016">   /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:08.0">   /sys/bus/pci/drivers/ivtv/unbind
echo ":04:08.0">   /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">   /sys/bus/pci/drivers/pci-stub/remove_id

# ivtv1
echo " 0016">   /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:09.0">   /sys/bus/pci/drivers/ivtv/unbind
echo ":04:09.0">   /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">   /sys/bus/pci/drivers/pci-stub/remove_id

   

I did not try unbinding the usb device so I can also try that.

I don'.t understand what is happening with the  0016. I
configured
the
pci card in kvm and I believe kvm does the binding to pci-stub in
recent
versions. Where is the  0016%oming from?

 

Okay, qemu-kvm might do it today, I don't know - I haven't changed
that script for the past year. But are you sure that it's not
libvirt/virsh/virt-manager which does that for you?

   

If you use the managed="yes" attribute on the   in libvirt
XML, then libvirt will automatically do the pcistub bind/unbind,
followed by a device reset at guest startup&   the reverse at shutdown.
If you have conflicting devices on the bus though, libvirt won't
attempt to unbind them, unless you had also explicitly assigned all
those conflicting devices to the same guest.

Daniel

 

I definitely have to try again (right now having some stability problems
on
the server that I am debugging).

The shared IRQs are as follows:

  16:  0  0  0  0  0  0
0  0   IO-APIC-fasteoi   uhci_hcd:usb3
  18: 252995  0  0  0  0  0
0  0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8, ivtv0
  19:  58281  0  0  0  0  0
0  0   IO-APIC-fasteoi   ata_piix, ata_piix, uhci_hcd:usb5,
uhci_hcd:usb7, ivtv1
  21:  0  0  0  0  0  0
0  0   IO-APIC-fasteoi   uhci_hcd:usb4
  23:713   6906  0  76919  0  0
0  0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6

So I have IRQ sharing with usb1, usb8, usb5, usb7.
   

Uffand your ata HDD controller. I guess i was much luckier than
you are, my ivtv0 didn't conflict at all and ivtv1 only conflicted
with USB.

 

I have also read that
ehci refers to USB 2.0 and uhci to USB 1.1 is that correct? Anyway, how
would I now identify the USB PCI devices that I would need to unbind to
get
rid of the sharing with the USB ports?
   

Play around with:
lspci -v
lspci -n
lsusb -v
lsusb -t

You can also just start by unbinding the first one and take note when
you hit the right ones...once you unbind one, it will disappear from
cat /proc/interrupts. When you're down to having only ivtv0 on one
interrupt and only ivtv1 on another interrupt, then you're ready to
bind with pci-stub and boot your guest.

 

It also doesn't really matter in
which slot I put the PVR-500 card because both cards share IRQs with USB
in
all cases.
   

You also have your conflicting ata controller to take into
consideration. I don

Re: USB Passthrough 1.1 performance problem...

2010-12-16 Thread Erik Brakkee

> 2010/12/14 Erik Brakkee :
>> Daniel P. Berrange wrote:
>>>
>>> On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:
>>>

 2010/12/14 Erik Brakkee:

>>
>> From: Kenni Lund
>> 2010/12/14 Erik Brakkee:
>>

 From: Kenni Lund

>
> Does this mean I have a chance now that PCI passthrough of my
> WinTV
> PVR-500
> might work now?
>

 Passthrough of a PVR-500 has been working for a long time. I've
 been
 running with passthrough of a PVR-500 in my HTPC, since
 November/December 2009...so it should work with any recent kernel
 and
 any recent version of qemu-kvm you can find today - No patching
 needed. The only issue I had with the PVR-500 card, was when *I*
 didn't free up the shared interrupts...once I fixed that, it "just
 worked".

>>>
>>> How did you free up those shared interrupts then? I tried different
>>> slots
>>> but always get conflicts with the USB irqs.
>>>
>>
>> I did an unbind of the conflicting device (eg. disabled it). I moved
>> the PVR-500 card around in the different slots and once I got a
>> conflict with the integrated sound card, I left the PVR-500 card in
>> that slot (it's a headless machine, so no need for sound) and
>> configured unbind of the sound card at boot time. On my old system I
>> think it was conflicting with one of the USB controllers as well,
>> but
>> it didn't really matter, as I only lost a few of the ports on the
>> back
>> of the computer for that particular USB controller - I still had
>> plenty of USB ports left and if I really needed more ports, I could
>> just plug in an extra USB PCI card.
>>
>> My /etc/rc.local boot script looks like the following today:
>> --
>> #Remove HDA conflicting with ivtv1
>> echo ":00:1b.0">  /sys/bus/pci/drivers/HDA\ Intel/unbind
>>
>> # ivtv0
>> echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
>> echo ":04:08.0">  /sys/bus/pci/drivers/ivtv/unbind
>> echo ":04:08.0">  /sys/bus/pci/drivers/pci-stub/bind
>> echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id
>>
>> # ivtv1
>> echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
>> echo ":04:09.0">  /sys/bus/pci/drivers/ivtv/unbind
>> echo ":04:09.0">  /sys/bus/pci/drivers/pci-stub/bind
>> echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id
>>
>
> I did not try unbinding the usb device so I can also try that.
>
> I don'.t understand what is happening with the  0016. I
> configured
> the
> pci card in kvm and I believe kvm does the binding to pci-stub in
> recent
> versions. Where is the  0016%oming from?
>

 Okay, qemu-kvm might do it today, I don't know - I haven't changed
 that script for the past year. But are you sure that it's not
 libvirt/virsh/virt-manager which does that for you?

>>>
>>> If you use the managed="yes" attribute on the  in libvirt
>>> XML, then libvirt will automatically do the pcistub bind/unbind,
>>> followed by a device reset at guest startup&  the reverse at shutdown.
>>> If you have conflicting devices on the bus though, libvirt won't
>>> attempt to unbind them, unless you had also explicitly assigned all
>>> those conflicting devices to the same guest.
>>>
>>> Daniel
>>>
>>
>> I definitely have to try again (right now having some stability problems
>> on
>> the server that I am debugging).
>>
>> The shared IRQs are as follows:
>>
>>  16:  0  0  0  0  0  0
>>0  0   IO-APIC-fasteoi   uhci_hcd:usb3
>>  18: 252995  0  0  0  0  0
>>0  0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8, ivtv0
>>  19:  58281  0  0  0  0  0
>>0  0   IO-APIC-fasteoi   ata_piix, ata_piix, uhci_hcd:usb5,
>> uhci_hcd:usb7, ivtv1
>>  21:  0  0  0  0  0  0
>>0  0   IO-APIC-fasteoi   uhci_hcd:usb4
>>  23:713   6906  0  76919  0  0
>>0  0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
>>
>> So I have IRQ sharing with usb1, usb8, usb5, usb7.
>
> Uffand your ata HDD controller. I guess i was much luckier than
> you are, my ivtv0 didn't conflict at all and ivtv1 only conflicted
> with USB.
>
>> I have also read that
>> ehci refers to USB 2.0 and uhci to USB 1.1 is that correct? Anyway, how
>> would I now identify the USB PCI devices that I would need to unbind to
>> get
>> rid of the sharing with the USB ports?
>
> Play around with:
> lspci -v
> lspci -n
> lsusb -v
> lsusb -t
>
> You can also just start by unbinding the first one and take note when
> you hit the right o

Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Kenni Lund
2010/12/14 Erik Brakkee :
> Daniel P. Berrange wrote:
>>
>> On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:
>>
>>>
>>> 2010/12/14 Erik Brakkee:
>>>
>
> From: Kenni Lund
> 2010/12/14 Erik Brakkee:
>
>>>
>>> From: Kenni Lund
>>>

 Does this mean I have a chance now that PCI passthrough of my WinTV
 PVR-500
 might work now?

>>>
>>> Passthrough of a PVR-500 has been working for a long time. I've been
>>> running with passthrough of a PVR-500 in my HTPC, since
>>> November/December 2009...so it should work with any recent kernel and
>>> any recent version of qemu-kvm you can find today - No patching
>>> needed. The only issue I had with the PVR-500 card, was when *I*
>>> didn't free up the shared interrupts...once I fixed that, it "just
>>> worked".
>>>
>>
>> How did you free up those shared interrupts then? I tried different
>> slots
>> but always get conflicts with the USB irqs.
>>
>
> I did an unbind of the conflicting device (eg. disabled it). I moved
> the PVR-500 card around in the different slots and once I got a
> conflict with the integrated sound card, I left the PVR-500 card in
> that slot (it's a headless machine, so no need for sound) and
> configured unbind of the sound card at boot time. On my old system I
> think it was conflicting with one of the USB controllers as well, but
> it didn't really matter, as I only lost a few of the ports on the back
> of the computer for that particular USB controller - I still had
> plenty of USB ports left and if I really needed more ports, I could
> just plug in an extra USB PCI card.
>
> My /etc/rc.local boot script looks like the following today:
> --
> #Remove HDA conflicting with ivtv1
> echo ":00:1b.0">  /sys/bus/pci/drivers/HDA\ Intel/unbind
>
> # ivtv0
> echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
> echo ":04:08.0">  /sys/bus/pci/drivers/ivtv/unbind
> echo ":04:08.0">  /sys/bus/pci/drivers/pci-stub/bind
> echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id
>
> # ivtv1
> echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
> echo ":04:09.0">  /sys/bus/pci/drivers/ivtv/unbind
> echo ":04:09.0">  /sys/bus/pci/drivers/pci-stub/bind
> echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id
>

 I did not try unbinding the usb device so I can also try that.

 I don'.t understand what is happening with the  0016. I configured
 the
 pci card in kvm and I believe kvm does the binding to pci-stub in recent
 versions. Where is the  0016%oming from?

>>>
>>> Okay, qemu-kvm might do it today, I don't know - I haven't changed
>>> that script for the past year. But are you sure that it's not
>>> libvirt/virsh/virt-manager which does that for you?
>>>
>>
>> If you use the managed="yes" attribute on the  in libvirt
>> XML, then libvirt will automatically do the pcistub bind/unbind,
>> followed by a device reset at guest startup&  the reverse at shutdown.
>> If you have conflicting devices on the bus though, libvirt won't
>> attempt to unbind them, unless you had also explicitly assigned all
>> those conflicting devices to the same guest.
>>
>> Daniel
>>
>
> I definitely have to try again (right now having some stability problems on
> the server that I am debugging).
>
> The shared IRQs are as follows:
>
>  16:          0          0          0          0          0          0
>    0          0   IO-APIC-fasteoi   uhci_hcd:usb3
>  18:     252995          0          0          0          0          0
>    0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8, ivtv0
>  19:      58281          0          0          0          0          0
>    0          0   IO-APIC-fasteoi   ata_piix, ata_piix, uhci_hcd:usb5,
> uhci_hcd:usb7, ivtv1
>  21:          0          0          0          0          0          0
>    0          0   IO-APIC-fasteoi   uhci_hcd:usb4
>  23:        713       6906          0      76919          0          0
>    0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
>
> So I have IRQ sharing with usb1, usb8, usb5, usb7.

Uffand your ata HDD controller. I guess i was much luckier than
you are, my ivtv0 didn't conflict at all and ivtv1 only conflicted
with USB.

> I have also read that
> ehci refers to USB 2.0 and uhci to USB 1.1 is that correct? Anyway, how
> would I now identify the USB PCI devices that I would need to unbind to get
> rid of the sharing with the USB ports?

Play around with:
lspci -v
lspci -n
lsusb -v
lsusb -t

You can also just start by unbinding the first one and take note when
you hit the right ones...once you unbind one, it will disappear from
cat /proc/interrupts. When you're down to having only ivtv0 on one
interrupt and only ivtv1 on another interrupt, then you're ready to
bind with 

Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Erik Brakkee

Daniel P. Berrange wrote:

On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:
   

2010/12/14 Erik Brakkee:
 

From: Kenni Lund
2010/12/14 Erik Brakkee:
 

From: Kenni Lund
 

Does this mean I have a chance now that PCI passthrough of my WinTV
PVR-500
might work now?
   

Passthrough of a PVR-500 has been working for a long time. I've been
running with passthrough of a PVR-500 in my HTPC, since
November/December 2009...so it should work with any recent kernel and
any recent version of qemu-kvm you can find today - No patching
needed. The only issue I had with the PVR-500 card, was when *I*
didn't free up the shared interrupts...once I fixed that, it "just
worked".
 

How did you free up those shared interrupts then? I tried different slots
but always get conflicts with the USB irqs.
   

I did an unbind of the conflicting device (eg. disabled it). I moved
the PVR-500 card around in the different slots and once I got a
conflict with the integrated sound card, I left the PVR-500 card in
that slot (it's a headless machine, so no need for sound) and
configured unbind of the sound card at boot time. On my old system I
think it was conflicting with one of the USB controllers as well, but
it didn't really matter, as I only lost a few of the ports on the back
of the computer for that particular USB controller - I still had
plenty of USB ports left and if I really needed more ports, I could
just plug in an extra USB PCI card.

My /etc/rc.local boot script looks like the following today:
--
#Remove HDA conflicting with ivtv1
echo ":00:1b.0">  /sys/bus/pci/drivers/HDA\ Intel/unbind

# ivtv0
echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:08.0">  /sys/bus/pci/drivers/ivtv/unbind
echo ":04:08.0">  /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id

# ivtv1
echo " 0016">  /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:09.0">  /sys/bus/pci/drivers/ivtv/unbind
echo ":04:09.0">  /sys/bus/pci/drivers/pci-stub/bind
echo " 0016">  /sys/bus/pci/drivers/pci-stub/remove_id
 

I did not try unbinding the usb device so I can also try that.

I don'.t understand what is happening with the  0016. I configured the
pci card in kvm and I believe kvm does the binding to pci-stub in recent
versions. Where is the  0016%oming from?
   

Okay, qemu-kvm might do it today, I don't know - I haven't changed
that script for the past year. But are you sure that it's not
libvirt/virsh/virt-manager which does that for you?
 

If you use the managed="yes" attribute on the  in libvirt
XML, then libvirt will automatically do the pcistub bind/unbind,
followed by a device reset at guest startup&  the reverse at shutdown.
If you have conflicting devices on the bus though, libvirt won't
attempt to unbind them, unless you had also explicitly assigned all
those conflicting devices to the same guest.

Daniel
   
I definitely have to try again (right now having some stability problems 
on the server that I am debugging).


The shared IRQs are as follows:

  16:  0  0  0  0  0  
0  0  0   IO-APIC-fasteoi   uhci_hcd:usb3
  18: 252995  0  0  0  0  
0  0  0   IO-APIC-fasteoi   ehci_hcd:usb1, 
uhci_hcd:usb8, ivtv0
  19:  58281  0  0  0  0  
0  0  0   IO-APIC-fasteoi   ata_piix, ata_piix, 
uhci_hcd:usb5, uhci_hcd:usb7, ivtv1
  21:  0  0  0  0  0  
0  0  0   IO-APIC-fasteoi   uhci_hcd:usb4
  23:713   6906  0  76919  0  
0  0  0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6


So I have IRQ sharing with usb1, usb8, usb5, usb7. I have also read that 
ehci refers to USB 2.0 and uhci to USB 1.1 is that correct? Anyway, how 
would I now identify the USB PCI devices that I would need to unbind to 
get rid of the sharing with the USB ports? It also doesn't really matter 
in which slot I put the PVR-500 card because both cards share IRQs with 
USB in all cases.


I have also used an add on USB PCI card but still got these conflicts. I 
was considering to get a PCIe USB card instead to try out in the hope 
that that would use different IRQs. Is that a realistic expectation? 
That way, I could disable all on-board USB (in the BIOS even) and use 
the add-on USB only.





--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Daniel P. Berrange
On Tue, Dec 14, 2010 at 12:55:04PM +0100, Kenni Lund wrote:
> 2010/12/14 Erik Brakkee :
> >> From: Kenni Lund 
> >> 2010/12/14 Erik Brakkee :
> 
>  From: Kenni Lund 
> >
> > Does this mean I have a chance now that PCI passthrough of my WinTV
> > PVR-500
> > might work now?
> 
>  Passthrough of a PVR-500 has been working for a long time. I've been
>  running with passthrough of a PVR-500 in my HTPC, since
>  November/December 2009...so it should work with any recent kernel and
>  any recent version of qemu-kvm you can find today - No patching
>  needed. The only issue I had with the PVR-500 card, was when *I*
>  didn't free up the shared interrupts...once I fixed that, it "just
>  worked".
> >>>
> >>> How did you free up those shared interrupts then? I tried different slots
> >>> but always get conflicts with the USB irqs.
> >>
> >> I did an unbind of the conflicting device (eg. disabled it). I moved
> >> the PVR-500 card around in the different slots and once I got a
> >> conflict with the integrated sound card, I left the PVR-500 card in
> >> that slot (it's a headless machine, so no need for sound) and
> >> configured unbind of the sound card at boot time. On my old system I
> >> think it was conflicting with one of the USB controllers as well, but
> >> it didn't really matter, as I only lost a few of the ports on the back
> >> of the computer for that particular USB controller - I still had
> >> plenty of USB ports left and if I really needed more ports, I could
> >> just plug in an extra USB PCI card.
> >>
> >> My /etc/rc.local boot script looks like the following today:
> >> --
> >> #Remove HDA conflicting with ivtv1
> >> echo ":00:1b.0" > /sys/bus/pci/drivers/HDA\ Intel/unbind
> >>
> >> # ivtv0
> >> echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
> >> echo ":04:08.0" > /sys/bus/pci/drivers/ivtv/unbind
> >> echo ":04:08.0" > /sys/bus/pci/drivers/pci-stub/bind
> >> echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id
> >>
> >> # ivtv1
> >> echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
> >> echo ":04:09.0" > /sys/bus/pci/drivers/ivtv/unbind
> >> echo ":04:09.0" > /sys/bus/pci/drivers/pci-stub/bind
> >> echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id
> >
> > I did not try unbinding the usb device so I can also try that.
> >
> > I don'.t understand what is happening with the  0016. I configured the
> > pci card in kvm and I believe kvm does the binding to pci-stub in recent
> > versions. Where is the  0016%oming from?
> 
> Okay, qemu-kvm might do it today, I don't know - I haven't changed
> that script for the past year. But are you sure that it's not
> libvirt/virsh/virt-manager which does that for you?

If you use the managed="yes" attribute on the  in libvirt
XML, then libvirt will automatically do the pcistub bind/unbind,
followed by a device reset at guest startup & the reverse at shutdown.
If you have conflicting devices on the bus though, libvirt won't
attempt to unbind them, unless you had also explicitly assigned all
those conflicting devices to the same guest.

Daniel
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Kenni Lund
2010/12/14 Erik Brakkee :
>> From: Kenni Lund 
>> 2010/12/14 Erik Brakkee :

 From: Kenni Lund 
>
> Does this mean I have a chance now that PCI passthrough of my WinTV
> PVR-500
> might work now?

 Passthrough of a PVR-500 has been working for a long time. I've been
 running with passthrough of a PVR-500 in my HTPC, since
 November/December 2009...so it should work with any recent kernel and
 any recent version of qemu-kvm you can find today - No patching
 needed. The only issue I had with the PVR-500 card, was when *I*
 didn't free up the shared interrupts...once I fixed that, it "just
 worked".
>>>
>>> How did you free up those shared interrupts then? I tried different slots
>>> but always get conflicts with the USB irqs.
>>
>> I did an unbind of the conflicting device (eg. disabled it). I moved
>> the PVR-500 card around in the different slots and once I got a
>> conflict with the integrated sound card, I left the PVR-500 card in
>> that slot (it's a headless machine, so no need for sound) and
>> configured unbind of the sound card at boot time. On my old system I
>> think it was conflicting with one of the USB controllers as well, but
>> it didn't really matter, as I only lost a few of the ports on the back
>> of the computer for that particular USB controller - I still had
>> plenty of USB ports left and if I really needed more ports, I could
>> just plug in an extra USB PCI card.
>>
>> My /etc/rc.local boot script looks like the following today:
>> --
>> #Remove HDA conflicting with ivtv1
>> echo ":00:1b.0" > /sys/bus/pci/drivers/HDA\ Intel/unbind
>>
>> # ivtv0
>> echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
>> echo ":04:08.0" > /sys/bus/pci/drivers/ivtv/unbind
>> echo ":04:08.0" > /sys/bus/pci/drivers/pci-stub/bind
>> echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id
>>
>> # ivtv1
>> echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
>> echo ":04:09.0" > /sys/bus/pci/drivers/ivtv/unbind
>> echo ":04:09.0" > /sys/bus/pci/drivers/pci-stub/bind
>> echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id
>
> I did not try unbinding the usb device so I can also try that.
>
> I don'.t understand what is happening with the  0016. I configured the
> pci card in kvm and I believe kvm does the binding to pci-stub in recent
> versions. Where is the  0016%oming from?

Okay, qemu-kvm might do it today, I don't know - I haven't changed
that script for the past year. But are you sure that it's not
libvirt/virsh/virt-manager which does that for you?

Anyway, it's coming from lspci -n. See the wiki page:
http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM

I can't remember why I run remove_id in the end, it's probably
unneeded, but I can't remember (and it works, so I don't toch it).

Best regards
Kenni
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Alexander Graf

Am 14.12.2010 um 11:02 schrieb Avi Kivity :

> On 12/13/2010 10:25 AM, Alexander Graf wrote:
>> >>
>> >  Is your point in this case that USB in a VM based on PCI passthrough will 
>> > always have problems when it comes to more real-time issues or does this 
>> > only apply to USB passthrough? I can imagine that PCI passthrough is 
>> > better since it uses hardware support. By the way, I have seen issues in 
>> > the past whereby the tv card stopped working because of high load on the 
>> > server running natively so real-time issues also exist apart from 
>> > virtualization.
>> 
>> IIRC the reason that PCI passthrough with EHCI performs as badly as it does 
>> is that BARs<  4k get passed through using the slow path (trap to qemu, 
>> issue MMIO in user space). Unfortunately, EHCI seems to have a 256 byte BAR 
>> region usually that is used for some handshaking:
>> 
>> 00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller 
>> (prog-if 20 [EHCI])
>> Subsystem: ATI Technologies Inc SB700/SB800 USB EHCI Controller
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- 
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- 
>> DEVSEL=medium>TAbort-SERR-> Latency: 64, Cache Line Size: 64 bytes
>> Interrupt: pin B routed to IRQ 17
>> Region 0: Memory at c8014400 (32-bit, non-prefetchable) [size=256]
>> 
> 
> That could certainly be optimized.  If the BAR is all along in its page, both 
> on guest and host (if not, we can migrate it, at least on the host), we can 
> use the same offset within the page on the host as it appears on the guest, 
> and assign the entire page.
> 
> We should make sure SeaBIOS uses a minimum alignment of 4k for mmio BARs.

Yep, I agree :). Back when I tried that, it seemed rather hard to change BAR 
mappings after init from user space. But it's certainly a thing the vfio stuff 
could easily tackle!

Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-14 Thread Avi Kivity

On 12/13/2010 10:25 AM, Alexander Graf wrote:

>>
>  Is your point in this case that USB in a VM based on PCI passthrough will 
always have problems when it comes to more real-time issues or does this only 
apply to USB passthrough? I can imagine that PCI passthrough is better since it 
uses hardware support. By the way, I have seen issues in the past whereby the tv 
card stopped working because of high load on the server running natively so 
real-time issues also exist apart from virtualization.

IIRC the reason that PCI passthrough with EHCI performs as badly as it does is 
that BARs<  4k get passed through using the slow path (trap to qemu, issue MMIO 
in user space). Unfortunately, EHCI seems to have a 256 byte BAR region usually 
that is used for some handshaking:

00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller 
(prog-if 20 [EHCI])
 Subsystem: ATI Technologies Inc SB700/SB800 USB EHCI Controller
 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
 Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- 
DEVSEL=medium>TAbort-SERR-

That could certainly be optimized.  If the BAR is all along in its page, 
both on guest and host (if not, we can migrate it, at least on the 
host), we can use the same offset within the page on the host as it 
appears on the guest, and assign the entire page.


We should make sure SeaBIOS uses a minimum alignment of 4k for mmio BARs.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-13 Thread Kenni Lund
2010/12/14 Erik Brakkee :
>> From: Kenni Lund 
>>> Does this mean I have a chance now that PCI passthrough of my WinTV
>>> PVR-500
>>> might work now?
>>
>> Passthrough of a PVR-500 has been working for a long time. I've been
>> running with passthrough of a PVR-500 in my HTPC, since
>> November/December 2009...so it should work with any recent kernel and
>> any recent version of qemu-kvm you can find today - No patching
>> needed. The only issue I had with the PVR-500 card, was when *I*
>> didn't free up the shared interrupts...once I fixed that, it "just
>> worked".
>
> How did you free up those shared interrupts then? I tried different slots
> but always get conflicts with the USB irqs.

I did an unbind of the conflicting device (eg. disabled it). I moved
the PVR-500 card around in the different slots and once I got a
conflict with the integrated sound card, I left the PVR-500 card in
that slot (it's a headless machine, so no need for sound) and
configured unbind of the sound card at boot time. On my old system I
think it was conflicting with one of the USB controllers as well, but
it didn't really matter, as I only lost a few of the ports on the back
of the computer for that particular USB controller - I still had
plenty of USB ports left and if I really needed more ports, I could
just plug in an extra USB PCI card.

My /etc/rc.local boot script looks like the following today:
--
#Remove HDA conflicting with ivtv1
echo ":00:1b.0" > /sys/bus/pci/drivers/HDA\ Intel/unbind

# ivtv0
echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:08.0" > /sys/bus/pci/drivers/ivtv/unbind
echo ":04:08.0" > /sys/bus/pci/drivers/pci-stub/bind
echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id

# ivtv1
echo " 0016" > /sys/bus/pci/drivers/pci-stub/new_id
echo ":04:09.0" > /sys/bus/pci/drivers/ivtv/unbind
echo ":04:09.0" > /sys/bus/pci/drivers/pci-stub/bind
echo " 0016" > /sys/bus/pci/drivers/pci-stub/remove_id
--

Best regards
Kenni
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-13 Thread Kenni Lund
2010/12/12 Erik Brakkee :
> Does this mean I have a chance now that PCI passthrough of my WinTV PVR-500
> might work now?

Passthrough of a PVR-500 has been working for a long time. I've been
running with passthrough of a PVR-500 in my HTPC, since
November/December 2009...so it should work with any recent kernel and
any recent version of qemu-kvm you can find today - No patching
needed. The only issue I had with the PVR-500 card, was when *I*
didn't free up the shared interrupts...once I fixed that, it "just
worked".

On the other hand, I've never had success with passthrough of USB.
I've spend a bunch of time trying to get various USB cards to work
with passthrough, I even purchased 3 USB cards, just to test USB
passthrough with different brands, interfaces and versions (PCI, PCIe,
USB 2.0, USB 3.0, etc). I gave up on that 5 months ago -
http://article.gmane.org/gmane.comp.emulators.kvm.devel/56719

> What version is this and where can I get this for opensuse?

I can't remember if I started out with the PVR-500 card with 0.11 or
0.12 ...I think it was 0.11...but anyway, you'll hopefully not run
with such an old version today, so any version should work.

Best regards
Kenni
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-13 Thread Jan Kiszka
Am 12.12.2010 23:31, Erik Brakkee wrote:
> Jan Kiszka wrote:
>>
 Are there some tuning parameters I can use or perhaps even kernel
 configuration paramters on the host to solve this?

 Cheers
Erik

 Host:Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
   OS: Opensuse 11.3 64 bit

 Guest:   OS: Opensuse 11.3 64 bit

>>> I can say now that I am giving up on getting this to work. One
>>> alternative was to use PCI passthrough the USB hardware,  but that
>>> didn't work for the USB that was on the motherboard. So I bought a USB
>>> PCI card and tried to use PCI passthrough for that. Unfortunately other
>>> problems occured there.
>>>
>>> For one, the problem with 4K alignment. But I could fix that by using
>>> the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it
>>> says:
>>>
>>> kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
>>> showopts intel_iommu=on
>>> pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a
>>>
>>>
>>> The noirqdebug flas was needed to avoid the host from disabling the IRQ
>>> (it was a shared IRQ).
>>>
>>> Using this, I could configure PCI passthrough and start the VM. Also the
>>> USB device showed up there. Only it did not work at all.
>>>
>>> Here is a summary of my journey up until know:
>>>
>>> The original approach I wanted to use was to pass my old PCI card (WinTV
>>> PVR-500) to a VM. This card is a well supported card and has been doing
>>> fine for me. Because of the PCI passthrough problems with the wintv
>>> card, I decided to try a USB card instead. This gave me a 'ctrl buffer
>>> too small' issue that I could solve by taking the source RPM for kvm and
>>> applying a known patch from red hat (increasing buffer size from 2048 to
>>> 8192). But then I got jerky video, probably due to USB 1.1 issues. To
>>> bypass these I could use PCI passthrough for USB. But with the PCI
>>> passthrough of this card I am again running into issues probably related
>>> to Shared IRQs. So, after all this I am back to square one.
>>>
>>> I have now modified my approach so instead of running a separate minimal
>>> host with my old server as a guest, I am now running the old server
>>> (same install) on the new hardware, using it as a host. I would
>>> definitely be interested in trying this out further in the future. I
>>> even tried Xen for a brief moment, only to realize that my host and
>>> guest felt slower (slower startup and execution) and much more difficult
>>> to handle.
>>>
>>>  From the experience of the last two days fulltime trying to get things
>>> working I can only conclude that the following two features would be
>>> really important to have:
>>>
>>> * Extended PCI passthrough support
>>>   o shared IRQ support
>>>  
>> Addressed by the series I sent out today.
>>
> Does this mean I have a chance now that PCI passthrough of my WinTV
> PVR-500 might work now?
> What version is this and where can I get this for opensuse?

Currently you have to clone my git trees [1, 2], then build and install
those to have the feature. Will take a while to see it in releases, and
after that also Opensuse packages.

Jan

[1] git://git.kiszka.org/linux-kvm.git queues/dev-assign
[2] git://git.kiszka.org/qemu-kvm.git queues/dev-assign



signature.asc
Description: OpenPGP digital signature


Re: USB Passthrough 1.1 performance problem...

2010-12-13 Thread Gerd Hoffmann

  Hi,


I am using a tv card in a VM and get jerky video.As I understand it, the
VM is using USB 1.1. However, when I set the USB controller in the BIOS
of my server to Fullspeed (12 Mbit/s) which is the USB 1.1 speed I am
able to get perfect results on the host but still on the guest the video
is jerky.


There is a patch series from Hans de Goede on qemu-devel which adds 
buffering for isochronous usb transfers to the usb passthrough code. 
Certainly worth a try.


cheers,
  Gerd

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-13 Thread Alexander Graf

On 12.12.2010, at 23:31, Erik Brakkee wrote:

> Jan Kiszka wrote:
>> 
 Are there some tuning parameters I can use or perhaps even kernel
 configuration paramters on the host to solve this?
 
 Cheers
   Erik
 
 Host:Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
  OS: Opensuse 11.3 64 bit
 
 Guest:   OS: Opensuse 11.3 64 bit
   
>>> I can say now that I am giving up on getting this to work. One
>>> alternative was to use PCI passthrough the USB hardware,  but that
>>> didn't work for the USB that was on the motherboard. So I bought a USB
>>> PCI card and tried to use PCI passthrough for that. Unfortunately other
>>> problems occured there.
>>> 
>>> For one, the problem with 4K alignment. But I could fix that by using
>>> the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it
>>> says:
>>> 
>>>kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
>>>showopts intel_iommu=on
>>>pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a
>>> 
>>> 
>>> The noirqdebug flas was needed to avoid the host from disabling the IRQ
>>> (it was a shared IRQ).
>>> 
>>> Using this, I could configure PCI passthrough and start the VM. Also the
>>> USB device showed up there. Only it did not work at all.
>>> 
>>> Here is a summary of my journey up until know:
>>> 
>>> The original approach I wanted to use was to pass my old PCI card (WinTV
>>> PVR-500) to a VM. This card is a well supported card and has been doing
>>> fine for me. Because of the PCI passthrough problems with the wintv
>>> card, I decided to try a USB card instead. This gave me a 'ctrl buffer
>>> too small' issue that I could solve by taking the source RPM for kvm and
>>> applying a known patch from red hat (increasing buffer size from 2048 to
>>> 8192). But then I got jerky video, probably due to USB 1.1 issues. To
>>> bypass these I could use PCI passthrough for USB. But with the PCI
>>> passthrough of this card I am again running into issues probably related
>>> to Shared IRQs. So, after all this I am back to square one.
>>> 
>>> I have now modified my approach so instead of running a separate minimal
>>> host with my old server as a guest, I am now running the old server
>>> (same install) on the new hardware, using it as a host. I would
>>> definitely be interested in trying this out further in the future. I
>>> even tried Xen for a brief moment, only to realize that my host and
>>> guest felt slower (slower startup and execution) and much more difficult
>>> to handle.
>>> 
>>> From the experience of the last two days fulltime trying to get things
>>> working I can only conclude that the following two features would be
>>> really important to have:
>>> 
>>>* Extended PCI passthrough support
>>>  o shared IRQ support
>>> 
>> Addressed by the series I sent out today.
>>   
> Does this mean I have a chance now that PCI passthrough of my WinTV PVR-500 
> might work now?
> What version is this and where can I get this for opensuse?
> 
> I still have the setup I used for testing with the host OS still installed 
> but not running so it would be really easy to try out new releases of KVM (it 
> is not a serious production server after all but mainly used to run some 
> websites and mailing lists).
> 
>>   
>>>  o supporting cases where memory is not aligned on a 4K boundary
>>> 
>> Hmm, I'm seeing warnings here when passing through one of my EHCIs, but
>> no fatal errors.
>>   
> In my case, the domain just didn't start.
> Btw. I was using 0.12.5 on opensuse 11.3 but could only find the sources for 
> 0.12.3 on download.opensuse.org (perhaps I looked wrong) and I patched those 
> for th 4K issue. PCI passthrough also did not work with my wintv pci card 
> with KVM 0.12.5.

The source rpm for the 11.3 update channel is here:

  http://download.opensuse.org/update/11.3/rpm/src/kvm-0.12.5-1.2.1.src.rpm

>>   
>>>* USB passthrough
>>>  o support USB 2.0
>>>  o support USB 3.0 (but taking one step at a time, 2.0 would
>>>also be great).
>>> 
>> Note that this will not solve any real-time issue (if that is part of
>> your problem). E.g.: While my EHCIs work nicely in PCI-passthrough
>> scenarios, I'm unable to use certain webcams that sooner or later run
>> out of sync.
>> 
>> Jan
>> 
>>   
> Is your point in this case that USB in a VM based on PCI passthrough will 
> always have problems when it comes to more real-time issues or does this only 
> apply to USB passthrough? I can imagine that PCI passthrough is better since 
> it uses hardware support. By the way, I have seen issues in the past whereby 
> the tv card stopped working because of high load on the server running 
> natively so real-time issues also exist apart from virtualization.

IIRC the reason that PCI passthrough with EHCI performs as badly as it does is 
that BARs < 4k get passed through using the slow path (trap to qe

Re: USB Passthrough 1.1 performance problem...

2010-12-12 Thread Erik Brakkee

Jan Kiszka wrote:



Are there some tuning parameters I can use or perhaps even kernel
configuration paramters on the host to solve this?

Cheers
   Erik

Host:Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
  OS: Opensuse 11.3 64 bit

Guest:   OS: Opensuse 11.3 64 bit
   

I can say now that I am giving up on getting this to work. One
alternative was to use PCI passthrough the USB hardware,  but that
didn't work for the USB that was on the motherboard. So I bought a USB
PCI card and tried to use PCI passthrough for that. Unfortunately other
problems occured there.

For one, the problem with 4K alignment. But I could fix that by using
the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it
says:

kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
showopts intel_iommu=on
pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a


The noirqdebug flas was needed to avoid the host from disabling the IRQ
(it was a shared IRQ).

Using this, I could configure PCI passthrough and start the VM. Also the
USB device showed up there. Only it did not work at all.

Here is a summary of my journey up until know:

The original approach I wanted to use was to pass my old PCI card (WinTV
PVR-500) to a VM. This card is a well supported card and has been doing
fine for me. Because of the PCI passthrough problems with the wintv
card, I decided to try a USB card instead. This gave me a 'ctrl buffer
too small' issue that I could solve by taking the source RPM for kvm and
applying a known patch from red hat (increasing buffer size from 2048 to
8192). But then I got jerky video, probably due to USB 1.1 issues. To
bypass these I could use PCI passthrough for USB. But with the PCI
passthrough of this card I am again running into issues probably related
to Shared IRQs. So, after all this I am back to square one.

I have now modified my approach so instead of running a separate minimal
host with my old server as a guest, I am now running the old server
(same install) on the new hardware, using it as a host. I would
definitely be interested in trying this out further in the future. I
even tried Xen for a brief moment, only to realize that my host and
guest felt slower (slower startup and execution) and much more difficult
to handle.

 From the experience of the last two days fulltime trying to get things
working I can only conclude that the following two features would be
really important to have:

* Extended PCI passthrough support
  o shared IRQ support
 

Addressed by the series I sent out today.
   
Does this mean I have a chance now that PCI passthrough of my WinTV 
PVR-500 might work now?

What version is this and where can I get this for opensuse?

I still have the setup I used for testing with the host OS still 
installed but not running so it would be really easy to try out new 
releases of KVM (it is not a serious production server after all but 
mainly used to run some websites and mailing lists).


   

  o supporting cases where memory is not aligned on a 4K boundary
 

Hmm, I'm seeing warnings here when passing through one of my EHCIs, but
no fatal errors.
   

In my case, the domain just didn't start.
Btw. I was using 0.12.5 on opensuse 11.3 but could only find the sources 
for 0.12.3 on download.opensuse.org (perhaps I looked wrong) and I 
patched those for th 4K issue. PCI passthrough also did not work with my 
wintv pci card with KVM 0.12.5.
   

* USB passthrough
  o support USB 2.0
  o support USB 3.0 (but taking one step at a time, 2.0 would
also be great).
 

Note that this will not solve any real-time issue (if that is part of
your problem). E.g.: While my EHCIs work nicely in PCI-passthrough
scenarios, I'm unable to use certain webcams that sooner or later run
out of sync.

Jan

   
Is your point in this case that USB in a VM based on PCI passthrough 
will always have problems when it comes to more real-time issues or does 
this only apply to USB passthrough? I can imagine that PCI passthrough 
is better since it uses hardware support. By the way, I have seen issues 
in the past whereby the tv card stopped working because of high load on 
the server running natively so real-time issues also exist apart from 
virtualization.


Apart from this, I am definitely interested in getting updates for KVM 
on opensuse. Is there a channel for that?



--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB Passthrough 1.1 performance problem...

2010-12-12 Thread Jan Kiszka
Am 12.12.2010 21:59, Erik Brakkee wrote:
> Erik Brakkee wrote:
>> Hi,
>>
>>
>> I am using a tv card in a VM and get jerky video.As I understand it,
>> the VM is using USB 1.1. However, when I set the USB controller in the
>> BIOS of my server to Fullspeed (12 Mbit/s) which is the USB 1.1 speed
>> I am able to get perfect results on the host but still on the guest
>> the video is jerky.

USB-passthrough at device level implies USB host controller emulation.
This comes with some overhead and will probably never reach native
performance. Virtualization also comes with occasion high latency spikes
(due to host activity delaying time-critical guest jobs). Those issues
are inherent. Moreover, you may run into emulation bugs, but they are
fixable in principle.

>>
>> Are there some tuning parameters I can use or perhaps even kernel
>> configuration paramters on the host to solve this?
>>
>> Cheers
>>   Erik
>>
>> Host:Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
>>  OS: Opensuse 11.3 64 bit
>>
>> Guest:   OS: Opensuse 11.3 64 bit
> I can say now that I am giving up on getting this to work. One
> alternative was to use PCI passthrough the USB hardware,  but that
> didn't work for the USB that was on the motherboard. So I bought a USB
> PCI card and tried to use PCI passthrough for that. Unfortunately other
> problems occured there.
> 
> For one, the problem with 4K alignment. But I could fix that by using
> the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it
> says:
> 
>kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
>showopts intel_iommu=on
>pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a
> 
> 
> The noirqdebug flas was needed to avoid the host from disabling the IRQ
> (it was a shared IRQ).
> 
> Using this, I could configure PCI passthrough and start the VM. Also the
> USB device showed up there. Only it did not work at all.
> 
> Here is a summary of my journey up until know:
> 
> The original approach I wanted to use was to pass my old PCI card (WinTV
> PVR-500) to a VM. This card is a well supported card and has been doing
> fine for me. Because of the PCI passthrough problems with the wintv
> card, I decided to try a USB card instead. This gave me a 'ctrl buffer
> too small' issue that I could solve by taking the source RPM for kvm and
> applying a known patch from red hat (increasing buffer size from 2048 to
> 8192). But then I got jerky video, probably due to USB 1.1 issues. To
> bypass these I could use PCI passthrough for USB. But with the PCI
> passthrough of this card I am again running into issues probably related
> to Shared IRQs. So, after all this I am back to square one.
> 
> I have now modified my approach so instead of running a separate minimal
> host with my old server as a guest, I am now running the old server
> (same install) on the new hardware, using it as a host. I would
> definitely be interested in trying this out further in the future. I
> even tried Xen for a brief moment, only to realize that my host and
> guest felt slower (slower startup and execution) and much more difficult
> to handle.
> 
> From the experience of the last two days fulltime trying to get things
> working I can only conclude that the following two features would be
> really important to have:
> 
>* Extended PCI passthrough support
>  o shared IRQ support

Addressed by the series I sent out today.

>  o supporting cases where memory is not aligned on a 4K boundary

Hmm, I'm seeing warnings here when passing through one of my EHCIs, but
no fatal errors.

>* USB passthrough
>  o support USB 2.0
>  o support USB 3.0 (but taking one step at a time, 2.0 would
>also be great).

Note that this will not solve any real-time issue (if that is part of
your problem). E.g.: While my EHCIs work nicely in PCI-passthrough
scenarios, I'm unable to use certain webcams that sooner or later run
out of sync.

Jan



signature.asc
Description: OpenPGP digital signature


Re: USB Passthrough 1.1 performance problem...

2010-12-12 Thread Erik Brakkee

Erik Brakkee wrote:

Hi,


I am using a tv card in a VM and get jerky video.As I understand it, 
the VM is using USB 1.1. However, when I set the USB controller in the 
BIOS of my server to Fullspeed (12 Mbit/s) which is the USB 1.1 speed 
I am able to get perfect results on the host but still on the guest 
the video is jerky.


Are there some tuning parameters I can use or perhaps even kernel 
configuration paramters on the host to solve this?


Cheers
  Erik

Host:Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
 OS: Opensuse 11.3 64 bit

Guest:   OS: Opensuse 11.3 64 bit
I can say now that I am giving up on getting this to work. One 
alternative was to use PCI passthrough the USB hardware,  but that 
didn't work for the USB that was on the motherboard. So I bought a USB 
PCI card and tried to use PCI passthrough for that. Unfortunately other 
problems occured there.


For one, the problem with 4K alignment. But I could fix that by using 
the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it 
says:


   kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
   showopts intel_iommu=on
   pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a


The noirqdebug flas was needed to avoid the host from disabling the IRQ 
(it was a shared IRQ).


Using this, I could configure PCI passthrough and start the VM. Also the 
USB device showed up there. Only it did not work at all.


Here is a summary of my journey up until know:

The original approach I wanted to use was to pass my old PCI card (WinTV 
PVR-500) to a VM. This card is a well supported card and has been doing 
fine for me. Because of the PCI passthrough problems with the wintv 
card, I decided to try a USB card instead. This gave me a 'ctrl buffer 
too small' issue that I could solve by taking the source RPM for kvm and 
applying a known patch from red hat (increasing buffer size from 2048 to 
8192). But then I got jerky video, probably due to USB 1.1 issues. To 
bypass these I could use PCI passthrough for USB. But with the PCI 
passthrough of this card I am again running into issues probably related 
to Shared IRQs. So, after all this I am back to square one.


I have now modified my approach so instead of running a separate minimal 
host with my old server as a guest, I am now running the old server 
(same install) on the new hardware, using it as a host. I would 
definitely be interested in trying this out further in the future. I 
even tried Xen for a brief moment, only to realize that my host and 
guest felt slower (slower startup and execution) and much more difficult 
to handle.


From the experience of the last two days fulltime trying to get things 
working I can only conclude that the following two features would be 
really important to have:


   * Extended PCI passthrough support
 o shared IRQ support
 o supporting cases where memory is not aligned on a 4K boundary
   * USB passthrough
 o support USB 2.0
 o support USB 3.0 (but taking one step at a time, 2.0 would
   also be great).

From the above, PCI passthrough improvements are most important as they 
will also allow (cheap) workarounds for USB passthrough issues.


I am definitely interested in hearing about new releases from KVM. Is 
there a mailing list I should subscribe to get information about the 
latest releases without intermediate discussions? I would also be 
interested in using latest stable versions of KVM for opensuse. Is there 
any repository I can configure to get those?


Cheers
  Erik

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html