|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] pci device hotplug, race accessing xenstore
 
Hello Simon,
  I took the source as per you message: http://marc.info/?l=xen-devel&m=124748015304566&w=4
  compiled and run it on an Intel-DQ35JO, Fedora-10. 
 When I try to pass pci device through at boot time in configuration file, there's a race between xend and qemu accessing xenstore.
  Xend waits in signalDeviceModel(...) for qemu to declare 'running' then write to the dm-command pipe the devices to be passed-through. 
 On the qemu side, it poses a watch on  /local/domain/0/device-model/2/command and expects the dm-command from there, by calling xs_watch(...). xs_watch(...) causes xenstored to run do_watch(...) and at the end, run add_event(...) with the following comment: 
          /* We fire once up front: simplifies clients and restart. */
 
  The problem shows when xend is faster, detecting qemu 'running' state, and calls xstransact.Store adn writes to the command pipe, before qemu can call main_loop_wait(...) and run one empty loop on the command pipe. This write causes xenstored to run a fires_watch, thus another add_event(...). 
The problem shows in qemu log by an extra dm-command, using wrong parameter and fails to initialize, for instance:
  ... xs_read_watch: msg type 15 body /local/domain/0/device-model/3/command read_message: msg type reply pci-ins 
dm-command: hot insert pass-through pci dev  read_message: msg type reply 0000:00:1b.0@100 register_real_device: Assigning real physical device 00:1b.0 ... pt_register_regions: IO region registered (size=0x00004000 base_addr=0x90420004) 
pt_msi_setup: msi mapped with pirq ff register_real_device: Real physical device 00:1b.0 registered successfuly! IRQ type = MSI-INTx read_message: msg type reply OK read_message: msg type reply OK xs_read_watch: msg type 15 body /local/domain/0/device-model/3/command 
read_message: msg type reply pci-ins dm-command: hot insert pass-through pci dev  read_message: msg type reply 0x20 hot add pci devfn -1 exceed. read_message: msg type reply OK ...
  On the xend side: 
 ...     (bdf_str, vdevfn)) VmError: Cannot pass-through PCI function '0000:00:1b.0@100'. Device model reported an error: no free hotplug devfn [2009-10-13 10:45:10 4174] ERROR (XendDomainInfo:471) VM start failed 
Traceback (most recent call last): ...
 
  Thank you.
  Phung-Te
 
 
  
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] pci device hotplug, race accessing xenstore,
Phung Te Ha <=
 
 
 |  
  
 | 
    | 
  
  
    |   | 
    |