Re: [Qemu-devel] Re: Hitting 29 NIC limit

2010-11-18 Thread Gerd Hoffmann

  Hi,


What is missing for multiple pci buses is



- a simple P2P bridge emulator for pc architecture
- seabios support
   - DSDT for a new machine which has multi pci buses(IRQ routing)


Is this really needed?

IIRC there are (used to be?) multiport nic pci cards which are simply 
multiple ethernet card pci chips behind a pci-to-pci bridge.  Such a 
pci-to-pci bridge should be able to operate without bios support, no?


So one cold just do ...

  -device pci-bridge,id=br
  -device e1000,bus=br.0
  -device e1000,bus=br.0

to create a bridge with two nics behind it?

cheers,
  Gerd



Re: [Qemu-devel] Re: Hitting 29 NIC limit

2010-11-18 Thread Isaku Yamahata
On Thu, Nov 18, 2010 at 12:54:29PM +0100, Gerd Hoffmann wrote:
   Hi,

 What is missing for multiple pci buses is

 - a simple P2P bridge emulator for pc architecture
 - seabios support
- DSDT for a new machine which has multi pci buses(IRQ routing)

 Is this really needed?

Q35 IRQ routing is different from piix4's. So new one is necessary.
Possibly it won't depend on the number of pci buses,
I haven't confirmed it.
-- 
yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Isaku Yamahata
Right now, qemu is internally ready to handle pci-to-pci bridge emulators
and it's quite easy to add a new simple p2p bridge emulator.
Just a single function to initialize vid/did and a single PCIDevinceInfo.

But it's difficult to use multi pci buses at the moment
because other part isn't ready. It's only for developers
who are interested in this area.

BTW, how many pci buses/slots/functions do you want at most?


What we have in the upstream repository is
- various fixes for p2p bridge support
- the library for p2p bridge support
- pcie root/upstream/downstream port emulators which is p2p bridges
  ioh3420/xio3130_upstream/xio3130_downstream

What is missing for multiple pci buses is
- a new PC machine description which has multiple pci buses
  My Q35 chipset patch will provide this.
- a simple P2P bridge emulator for pc architecture
- seabios support
  - DSDT for a new machine which has multi pci buses(IRQ routing)
  - pv pci bus numbering
this isn't a must, I suppose
  I have those patches locally.

thanks,

On Wed, Nov 17, 2010 at 12:58:43PM +0200, Michael S. Tsirkin wrote:
 On Tue, Nov 16, 2010 at 11:20:52AM -0800, Anjali Kulkarni wrote:
  Hi,
  
  Can you elaborate what you mean by bridge support? I would really like to go
  to 256 interfaces.
  
  Anjali
 
 Isaku Yamahata wrote most of it, I'll let him comment.
 
 -- 
 MST
 

-- 
yamahata



Re: [Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Wei Xu
Isaku,

Could you explain more on irq routing in dsdt and related code in qemu? I
encountered a problem: emulated user networking (-net nic -net user) cannot
work in my qemu-kvm+q35+pcie code. Your original q35 (pure qemu) works fine.

Thanks!
Wei


On 11/17/10 7:09 PM, Isaku Yamahata yamah...@valinux.co.jp wrote:

 Right now, qemu is internally ready to handle pci-to-pci bridge emulators
 and it's quite easy to add a new simple p2p bridge emulator.
 Just a single function to initialize vid/did and a single PCIDevinceInfo.
 
 But it's difficult to use multi pci buses at the moment
 because other part isn't ready. It's only for developers
 who are interested in this area.
 
 BTW, how many pci buses/slots/functions do you want at most?
 
 
 What we have in the upstream repository is
 - various fixes for p2p bridge support
 - the library for p2p bridge support
 - pcie root/upstream/downstream port emulators which is p2p bridges
   ioh3420/xio3130_upstream/xio3130_downstream
 
 What is missing for multiple pci buses is
 - a new PC machine description which has multiple pci buses
   My Q35 chipset patch will provide this.
 - a simple P2P bridge emulator for pc architecture
 - seabios support
   - DSDT for a new machine which has multi pci buses(IRQ routing)
   - pv pci bus numbering
 this isn't a must, I suppose
   I have those patches locally.
 
 thanks,
 
 On Wed, Nov 17, 2010 at 12:58:43PM +0200, Michael S. Tsirkin wrote:
 On Tue, Nov 16, 2010 at 11:20:52AM -0800, Anjali Kulkarni wrote:
 Hi,
 
 Can you elaborate what you mean by bridge support? I would really like to go
 to 256 interfaces.
 
 Anjali
 
 Isaku Yamahata wrote most of it, I'll let him comment.
 
 -- 
 MST
 




Re: [Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Isaku Yamahata
On Wed, Nov 17, 2010 at 09:41:03PM -0800, Wei Xu wrote:
 Could you explain more on irq routing in dsdt and related code in qemu? I
 encountered a problem: emulated user networking (-net nic -net user) cannot
 work in my qemu-kvm+q35+pcie code. Your original q35 (pure qemu) works fine.

The related functions are ich9_lpc_set_irq_pic() and ich9_lpc_set_irq()
in q35.c.
I'm aware that there is something wrong.
I'll fix it when I rebase the patches, but I haven't found time yet.
-- 
yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Michael S. Tsirkin
On Thu, Nov 18, 2010 at 12:09:18PM +0900, Isaku Yamahata wrote:
 Right now, qemu is internally ready to handle pci-to-pci bridge emulators
 and it's quite easy to add a new simple p2p bridge emulator.
 Just a single function to initialize vid/did and a single PCIDevinceInfo.
 
 But it's difficult to use multi pci buses at the moment
 because other part isn't ready. It's only for developers
 who are interested in this area.
 
 BTW, how many pci buses/slots/functions do you want at most?
 
 
 What we have in the upstream repository is
 - various fixes for p2p bridge support
 - the library for p2p bridge support
 - pcie root/upstream/downstream port emulators which is p2p bridges
   ioh3420/xio3130_upstream/xio3130_downstream
 
 What is missing for multiple pci buses is
 - a new PC machine description which has multiple pci buses
   My Q35 chipset patch will provide this.

IMHO, what we really need is a way to specify bridges
through qdev. Not a machine with a hard-coded buses.
The firmware paths used by Gleb's code might supply
a good syntax to specify topology.

 - a simple P2P bridge emulator for pc architecture
 - seabios support
   - DSDT for a new machine which has multi pci buses(IRQ routing)
   - pv pci bus numbering

Interesting. What's the motivation for this?

 this isn't a must, I suppose
   I have those patches locally.
 
 thanks,
 
 On Wed, Nov 17, 2010 at 12:58:43PM +0200, Michael S. Tsirkin wrote:
  On Tue, Nov 16, 2010 at 11:20:52AM -0800, Anjali Kulkarni wrote:
   Hi,
   
   Can you elaborate what you mean by bridge support? I would really like to 
   go
   to 256 interfaces.
   
   Anjali
  
  Isaku Yamahata wrote most of it, I'll let him comment.
  
  -- 
  MST
  
 
 -- 
 yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Isaku Yamahata
On Thu, Nov 18, 2010 at 08:46:43AM +0200, Michael S. Tsirkin wrote:
  What is missing for multiple pci buses is
  - a new PC machine description which has multiple pci buses
My Q35 chipset patch will provide this.
 
 IMHO, what we really need is a way to specify bridges
 through qdev. Not a machine with a hard-coded buses.

Yes, it's long-term goal.


 The firmware paths used by Gleb's code might supply
 a good syntax to specify topology.
 
  - a simple P2P bridge emulator for pc architecture
  - seabios support
- DSDT for a new machine which has multi pci buses(IRQ routing)
- pv pci bus numbering
 
 Interesting. What's the motivation for this?

For hot-plugging pci-to-pci bridge. It requires sparse pci bus numbering.
In fact, it's not so strong requirement.
Possibly I would have to dig into dsdt.
-- 
yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Michael S. Tsirkin
On Thu, Nov 18, 2010 at 04:09:34PM +0900, Isaku Yamahata wrote:
 On Thu, Nov 18, 2010 at 08:46:43AM +0200, Michael S. Tsirkin wrote:
   What is missing for multiple pci buses is
   - a new PC machine description which has multiple pci buses
 My Q35 chipset patch will provide this.
  
  IMHO, what we really need is a way to specify bridges
  through qdev. Not a machine with a hard-coded buses.
 
 Yes, it's long-term goal.
 
 
  The firmware paths used by Gleb's code might supply
  a good syntax to specify topology.
  
   - a simple P2P bridge emulator for pc architecture
   - seabios support
 - DSDT for a new machine which has multi pci buses(IRQ routing)
 - pv pci bus numbering
  
  Interesting. What's the motivation for this?
 
 For hot-plugging pci-to-pci bridge. It requires sparse pci bus numbering.

Not sure I understand. pci bus numbering should be
completely up to the guest.

 In fact, it's not so strong requirement.
 Possibly I would have to dig into dsdt.

Yes, some guest-side technology like acpi might be needed.

 -- 
 yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-17 Thread Isaku Yamahata
On Thu, Nov 18, 2010 at 09:15:19AM +0200, Michael S. Tsirkin wrote:
 On Thu, Nov 18, 2010 at 04:09:34PM +0900, Isaku Yamahata wrote:
  On Thu, Nov 18, 2010 at 08:46:43AM +0200, Michael S. Tsirkin wrote:
What is missing for multiple pci buses is
- a new PC machine description which has multiple pci buses
  My Q35 chipset patch will provide this.
   
   IMHO, what we really need is a way to specify bridges
   through qdev. Not a machine with a hard-coded buses.
  
  Yes, it's long-term goal.
  
  
   The firmware paths used by Gleb's code might supply
   a good syntax to specify topology.
   
- a simple P2P bridge emulator for pc architecture
- seabios support
  - DSDT for a new machine which has multi pci buses(IRQ routing)
  - pv pci bus numbering
   
   Interesting. What's the motivation for this?
  
  For hot-plugging pci-to-pci bridge. It requires sparse pci bus numbering.
 
 Not sure I understand. pci bus numbering should be
 completely up to the guest.

Yes.


  In fact, it's not so strong requirement.
  Possibly I would have to dig into dsdt.
 
 Yes, some guest-side technology like acpi might be needed.

OSes like Linux tries to keep bios settings as much as possible.
It means seabios needs to understand dsdt and initialize pci buses
properly according to it.
I think pv numbering is much easier than teaching seabios dsdt parsing.
-- 
yamahata



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-16 Thread Michael S. Tsirkin
On Thu, Oct 14, 2010 at 05:17:36PM -0500, Anthony Liguori wrote:
 On 10/14/2010 05:12 PM, Anjali Kulkarni wrote:
 Thanks. Does this work for e1000 as well?
 
 Haven't tried.  I don't know how various e1000 drivers would react.
 
 Also, does it support pci hotplug?
 
 No, but that's fixable down the road.
 
 Regards,
 
 Anthony Liguori

Probably not.



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-16 Thread Michael S. Tsirkin
On Thu, Oct 14, 2010 at 02:07:17PM +0200, Avi Kivity wrote:
  On 10/14/2010 12:54 AM, Anthony Liguori wrote:
 On 10/13/2010 05:32 PM, Anjali Kulkarni wrote:
 
 Hi,
 
 Using the legacy way of starting up NICs, I am hitting a
 limitation after 29
 NICs ie no more than 29 are detected (that's because of the 32 PCI slot
 limit on a single bus- 3 are already taken up)
 I had initially increased the MAX_NICS to 48, just on my tree, to get to
 more, but ofcource that wont work.
 Is there any way to go beyond 29 NICs the legacy way?  What is
 the maximum
 that can be supported by the qdev mothod?
 
 I got up to 104 without trying very hard using the following script:
 
 args=
 for slot in 5 6 7 8 9 10 11 12 13 14 15 16 17; do
 for fn in 0 1 2 3 4 5 6 7; do
 args=$args -netdev user,id=eth${slot}_${fn}
 args=$args -device 
  virtio-net-pci,addr=${slot}.${fn},netdev=eth${slot}_${fn},multifunction=on,romfile=
 done
 done
 
 x86_64-softmmu/qemu-system-x86_64 -hda ~/images/linux.img ${args}
 -enable-kvm
 
 The key is to make the virtio-net devices multifunction and to
 fill out all 8 functions for each slot.
 
 This is unlikely to work right wrt pci hotplug.  If we want to
 support a large number of interfaces, we need true multiport cards.

Bridge support seems to be working mostly fine here.
That will let you go up to 256 devices without multifunction.

-- 
MST



[Qemu-devel] Re: Hitting 29 NIC limit

2010-11-16 Thread Anthony Liguori

On 11/16/2010 11:23 AM, Michael S. Tsirkin wrote:

On Thu, Oct 14, 2010 at 05:17:36PM -0500, Anthony Liguori wrote:
   

On 10/14/2010 05:12 PM, Anjali Kulkarni wrote:
 

Thanks. Does this work for e1000 as well?
   

Haven't tried.  I don't know how various e1000 drivers would react.

 

Also, does it support pci hotplug?
   

No, but that's fixable down the road.

Regards,

Anthony Liguori
 

Probably not.
   


FWIW, by fixable, I meant, we could add the ability to hot plug a 
multi-port NIC device.  For instance, we could have -device 
virtio-net-pci-x8 which would be an 8-port virtio-net card.


Regards,

Anthony Liguori