Jo Mills
2014-Apr-27  11:23 UTC
Create domU with pciback fails, then my system re-boots! xen-hypervisor-4.3-amd64
Hi,
I am having difficulty in getting my domU with pciback to start and 
would be very grateful for any help or advice on where I am going 
wrong.  My system is a GenuineIntel Intel(R) Core(TM)2 Quad CPU, 
motherboard in Intel S32000SHV, 8GB ram.  BIOS is the latest released 
version. 
dom0 is Debian Jessie:
    Linux version 3.13-1-amd64 (debian-kernel@lists.debian.org) (gcc
      version 4.8.2 (Debian 4.8.2-16) ) #1 SMP Debian 3.13.10-1
      (2014-04-15)
    xen-hypervisor-4.3-amd64            4.3.0-3+b1
    xen-system-amd64                    4.3.0-3+b1
    xen-tools                           4.4-1
    xen-utils-4.3                       4.3.0-3+b1
    xen-utils-common                    4.3.0-3
    xenstore-utils                      4.3.0-3+b1
There are four ethernet devices fitted, and after the various udev 
renaming of Ethernet interfaces these come out as being:
    eth0 via-rhine 0000:04:00.0 assigned for zone LOC xenbr0
    
    eth1 via-rhine 0000:04:01.0 assigned for zone DMZ (pci-passthrough)
    
    eth2 e1000 0000:04:02.0 used for DBRB
    
    eth3 e1000e 0000:01:00.0 planned for Windows client domU
    
  Aside: In "xl dmesg" I get:
       (XEN) Intel VT-d iommu 0 supported page sizes: 4kB.
       (XEN) Intel VT-d Snoop Control not enabled.
       (XEN) Intel VT-d Dom0 DMA Passthrough not enabled.
       (XEN) Intel VT-d Queued Invalidation not enabled.
       (XEN) Intel VT-d Interrupt Remapping not enabled.
       (XEN) Intel VT-d Shared EPT tables not enabled.
       (XEN) I/O virtualisation enabled
       
  so I am hopeful of at some stage, getting a windows client to run.
On power up, dom0 starts OK, but I have never managed to get my file
    /etc/modprobe.d/xen-pciback.conf 
    
to work.  It contains the following:  
  install via-rhine /sbin/modprobe pciback ; /sbin/modprobe --first-time
--ignore-install via_rhine
  options xen-pciback hide=(0000:04:01.0) 
  install e1000 /sbin/modprobe pciback ; /sbin/modprobe --first-time
--ignore-install e1000
  options xen-pciback hide=(0000:01:00.0) 
However, if I issue the commands:
    
  ~#  xl pci-assignable-add 04:01.0
  ~#  xl pci-assignable-add 01:00.0
  ~#  xl pci-assignable-list
I get the following:
    0000:01:00.0
    0000:04:01.0
In syslog I can also see:
   pciback 0000:04:01.0: seizing device
   xen: registering gsi 17 triggering 0 polarity 1
   Already setup the GSI :17
   e1000e 0000:01:00.0 eth3: removed PHC
   pciback 0000:01:00.0: seizing device
   xen: registering gsi 16 triggering 0 polarity 1
   Already setup the GSI :16
so this would seem to be OK.  
 ~# ifconfig
 
then shows:
eth0      Link encap:Ethernet  HWaddr 00:24:01:a3:b9:ef  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2813 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1323 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:256913 (250.8 KiB)  TX bytes:331402 (323.6 KiB)
eth2      Link encap:Ethernet  HWaddr 00:15:17:ca:37:d5  
          inet addr:192.168.10.202  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:feca:37d5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:103247 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:128195865 (122.2 MiB)  TX bytes:2626900 (2.5 MiB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:88 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6468 (6.3 KiB)  TX bytes:6468 (6.3 KiB)
xenbr0    Link encap:Ethernet  HWaddr 00:24:01:a3:b9:ef  
          inet addr:192.168.1.202  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:1ff:fea3:b9ef/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2813 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1323 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:217381 (212.2 KiB)  TX bytes:331402 (323.6 KiB)
DRBD and xenbr0 are working so it all seems OK so far.  My config file 
for the domU is:
~# cat /etc/xen/vm-server-21.cfg
  #
  # Configuration file for the Xen instance vm-server-21, created
  # by xen-tools 3.9 on Thu Apr  8 12:37:42 2010.
  #
  # Modified according to xl.cfg on 20-APR-2104
  #
  
  #
  #  Hostname
  #
  name        = 'vm-server-21'
  
  #
  # Builder
  #
  ##builder    = 'generic'
  
  #
  # cpus
  #
  cpus        = '1-3'
  
  #
  # Memory in MB
  #
  memory      = '1024'
  
  #
  # Bootloader  (Not the previous path via /etc/xen/default/...) 
  #
  ### bootloader  = 'pygrub'
  
  #
  # Kernel
(https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1210293.html)
  #
  kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64'
  ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'
  
  #
  #  Disk device(s).
  #
  root        = '/dev/xvdb ro'
  
  #
  # Pygrub needs the system partition to appear first
  #
  disk        = [
                    'drbd:vm-21-disk,xvdb,w',
                    'phy:/dev/green/vm-server-21-swap,xvda,w',
                ]
  
  
  
  #
  #  Networking
  #
  ## vif         = [ 'ip=192.168.2.221,mac=00:16:3e:dd:02:00' ]
  #
  # Add support for looped through pci NIC
  # (Same device number on both blue and green
  #
  pci = [ '04:01.0' ]
  
  #
  #  Behaviour
  #
  on_poweroff = 'destroy'
  on_reboot   = 'restart'
  on_crash    = 'restart'
  
  extra = 'xencons=tty swiotlb=force'
When I issue the command
~# xl -vvv create -c /etc/xen/vm-server-21.cfg
all hell breaks lose and after a bit the server re-boots.
The output from the xl command is:
Parsing config from /etc/xen/vm-server-21.cfg
libxl: debug: libxl_create.c:1230:do_domain_create: ao 0x9d71f0: create:
how=(nil) callback=(nil) poller=0x9d6ba0
libxl: verbose: libxl_create.c:130:libxl__domain_build_info_setdefault: qemu-xen
is unavailable, use qemu-xen-traditional instead: No such file or directory
libxl: debug: libxl_device.c:257:libxl__device_disk_set_backend: Disk vdev=xvdb
spec.backend=unknown
libxl: debug: libxl_device.c:188:disk_try_backend: Disk vdev=xvdb, uses
script=... assuming phy backend
libxl: debug: libxl_device.c:296:libxl__device_disk_set_backend: Disk vdev=xvdb,
using backend phy
libxl: debug: libxl_device.c:257:libxl__device_disk_set_backend: Disk vdev=xvda
spec.backend=unknown
libxl: debug: libxl_device.c:296:libxl__device_disk_set_backend: Disk vdev=xvda,
using backend phy
libxl: debug: libxl_create.c:675:initiate_domain_create: running bootloader
libxl: debug: libxl_bootloader.c:327:libxl__bootloader_run: no bootloader
configured, using user supplied kernel
libxl: debug: libxl_event.c:608:libxl__ev_xswatch_deregister: watch w=0x9d7608:
deregister unregistered
libxl: debug: libxl_x86.c:82:e820_sanitize: Memory: 1048576kB End of RAM:
0x40000 (PFN) Delta: 0kB, PCI start: 3665832kB (0xdfbea PFN), Balloon 0kB
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [0 -> 40000] RAM
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [40000 -> dfbea] Unusable
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfbea -> dfc96] ACPI NVS
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfc96 -> dfcfa] Unusable
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfcfa -> dfd5f] Reserved
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfd5f -> dfd69] Unusable
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfd69 -> dfddf] ACPI NVS
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfddf -> dfde5] Unusable
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfde5 -> dfdff] ACPI
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfdff -> dfe00] Unusable
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [dfe00 -> dff00] Reserved
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [f0000 -> f4000] Reserved
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [fee00 -> fee01] Reserved
libxl: debug: libxl_x86.c:201:e820_sanitize: :  [fff80 -> fff8c] Reserved
domainbuilder: detail: xc_dom_allocate: cmdline="root=/dev/xvdb ro
xencons=tty swiotlb=force", features="(null)"
libxl: debug: libxl_dom.c:341:libxl__build_pv: pv kernel mapped 0 path
/boot/vmlinuz-2.6.26-2-xen-amd64
domainbuilder: detail: xc_dom_kernel_file:
filename="/boot/vmlinuz-2.6.26-2-xen-amd64"
domainbuilder: detail: xc_dom_malloc_filemap    : 1666 kB
domainbuilder: detail: xc_dom_malloc            : 7801 kB
domainbuilder: detail: xc_dom_do_gunzip: unzip ok, 0x1a0b72 -> 0x79e530
domainbuilder: detail: xc_dom_ramdisk_file:
filename="/boot/initrd.img-2.6.26-2-xen-amd64"
domainbuilder: detail: xc_dom_malloc_filemap    : 7926 kB
domainbuilder: detail: xc_dom_boot_xen_init: ver 4.3, caps xen-3.0-x86_64
xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
domainbuilder: detail: xc_dom_parse_image: called
domainbuilder: detail: xc_dom_find_loader: trying multiboot-binary loader ... 
domainbuilder: detail: loader probe failed
domainbuilder: detail: xc_dom_find_loader: trying Linux bzImage loader ... 
domainbuilder: detail: xc_dom_probe_bzimage_kernel: kernel is not a bzImage
domainbuilder: detail: loader probe failed
domainbuilder: detail: xc_dom_find_loader: trying ELF-generic loader ... 
domainbuilder: detail: loader probe OK
xc: detail: elf_parse_binary: phdr: paddr=0x200000 memsz=0x2fe000
xc: detail: elf_parse_binary: phdr: paddr=0x4fe000 memsz=0x529a8
xc: detail: elf_parse_binary: phdr: paddr=0x551000 memsz=0x888
xc: detail: elf_parse_binary: phdr: paddr=0x552000 memsz=0xdf918
xc: detail: elf_parse_binary: memory: 0x200000 -> 0x631918
xc: detail: elf_xen_parse_note: GUEST_OS = "linux"
xc: detail: elf_xen_parse_note: GUEST_VERSION = "2.6"
xc: detail: elf_xen_parse_note: XEN_VERSION = "xen-3.0"
xc: detail: elf_xen_parse_note: VIRT_BASE = 0xffffffff80000000
xc: detail: elf_xen_parse_note: PADDR_OFFSET = 0x0
xc: detail: elf_xen_parse_note: ENTRY = 0xffffffff80200000
xc: detail: elf_xen_parse_note: HYPERCALL_PAGE = 0xffffffff80208000
xc: detail: elf_xen_parse_note: unknown xen elf note (0xd)
xc: detail: elf_xen_parse_note: FEATURES =
"writable_page_tables|writable_descriptor_tables|auto_translated_physmap|pae_pgdir_above_4gb|supervisor_mode_kernel"
xc: detail: elf_xen_parse_note: LOADER = "generic"
xc: detail: elf_xen_parse_note: SUSPEND_CANCEL = 0x1
xc: detail: elf_xen_addr_calc_check: addresses:
xc: detail:     virt_base        = 0xffffffff80000000
xc: detail:     elf_paddr_offset = 0x0
xc: detail:     virt_offset      = 0xffffffff80000000
xc: detail:     virt_kstart      = 0xffffffff80200000
xc: detail:     virt_kend        = 0xffffffff80631918
xc: detail:     virt_entry       = 0xffffffff80200000
xc: detail:     p2m_base         = 0xffffffffffffffff
domainbuilder: detail: xc_dom_parse_elf_kernel: xen-3.0-x86_64:
0xffffffff80200000 -> 0xffffffff80631918
domainbuilder: detail: xc_dom_mem_init: mem 1024 MB, pages 0x40000 pages, 4k
each
domainbuilder: detail: xc_dom_mem_init: 0x40000 pages
domainbuilder: detail: xc_dom_boot_mem_init: called
domainbuilder: detail: x86_compat: guest xen-3.0-x86_64, address size 64
domainbuilder: detail: xc_dom_malloc            : 2048 kB
domainbuilder: detail: xc_dom_build_image: called
domainbuilder: detail: xc_dom_alloc_segment:   kernel       : 0xffffffff80200000
-> 0xffffffff80632000  (pfn 0x200 + 0x432 pages)
domainbuilder: detail: xc_dom_pfn_to_ptr_retcount: domU mapping: pfn 0x200+0x432
at 0x7fea4385c000
xc: detail: elf_load_binary: phdr 0 at 0x7fea4385c000 -> 0x7fea43b5a000
xc: detail: elf_load_binary: phdr 1 at 0x7fea43b5a000 -> 0x7fea43bac9a8
xc: detail: elf_load_binary: phdr 2 at 0x7fea43bad000 -> 0x7fea43bad888
xc: detail: elf_load_binary: phdr 3 at 0x7fea43bae000 -> 0x7fea43bec6b0
domainbuilder: detail: xc_dom_alloc_segment:   ramdisk      : 0xffffffff80632000
-> 0xffffffff81d14000  (pfn 0x632 + 0x16e2 pages)
domainbuilder: detail: xc_dom_malloc            : 137 kB
domainbuilder: detail: xc_dom_pfn_to_ptr_retcount: domU mapping: pfn
0x632+0x16e2 at 0x7fea4217a000
domainbuilder: detail: xc_dom_do_gunzip: unzip ok, 0x7bd8b0 -> 0x16e1610
domainbuilder: detail: xc_dom_alloc_segment:   phys2mach    : 0xffffffff81d14000
-> 0xffffffff81f14000  (pfn 0x1d14 + 0x200 pages)
domainbuilder: detail: xc_dom_pfn_to_ptr_retcount: domU mapping: pfn
0x1d14+0x200 at 0x7fea41f7a000
domainbuilder: detail: xc_dom_alloc_page   :   start info   : 0xffffffff81f14000
(pfn 0x1f14)
domainbuilder: detail: xc_dom_alloc_page   :   xenstore     : 0xffffffff81f15000
(pfn 0x1f15)
domainbuilder: detail: xc_dom_alloc_page   :   console      : 0xffffffff81f16000
(pfn 0x1f16)
domainbuilder: detail: nr_page_tables: 0x0000ffffffffffff/48: 0xffff000000000000
-> 0xffffffffffffffff, 1 table(s)
domainbuilder: detail: nr_page_tables: 0x0000007fffffffff/39: 0xffffff8000000000
-> 0xffffffffffffffff, 1 table(s)
domainbuilder: detail: nr_page_tables: 0x000000003fffffff/30: 0xffffffff80000000
-> 0xffffffffbfffffff, 1 table(s)
domainbuilder: detail: nr_page_tables: 0x00000000001fffff/21: 0xffffffff80000000
-> 0xffffffff81ffffff, 16 table(s)
domainbuilder: detail: xc_dom_alloc_segment:   page tables  : 0xffffffff81f17000
-> 0xffffffff81f2a000  (pfn 0x1f17 + 0x13 pages)
domainbuilder: detail: xc_dom_pfn_to_ptr_retcount: domU mapping: pfn 0x1f17+0x13
at 0x7fea46b00000
domainbuilder: detail: xc_dom_alloc_page   :   boot stack   : 0xffffffff81f2a000
(pfn 0x1f2a)
domainbuilder: detail: xc_dom_build_image  : virt_alloc_end : 0xffffffff81f2b000
domainbuilder: detail: xc_dom_build_image  : virt_pgtab_end : 0xffffffff82000000
domainbuilder: detail: xc_dom_boot_image: called
domainbuilder: detail: arch_setup_bootearly: doing nothing
domainbuilder: detail: xc_dom_compat_check: supported guest type: xen-3.0-x86_64
<= matches
domainbuilder: detail: xc_dom_compat_check: supported guest type:
xen-3.0-x86_32p
domainbuilder: detail: xc_dom_compat_check: supported guest type: hvm-3.0-x86_32
domainbuilder: detail: xc_dom_compat_check: supported guest type:
hvm-3.0-x86_32p
domainbuilder: detail: xc_dom_compat_check: supported guest type: hvm-3.0-x86_64
domainbuilder: detail: xc_dom_update_guest_p2m: dst 64bit, pages 0x40000
domainbuilder: detail: clear_page: pfn 0x1f16, mfn 0x1ddb0e
domainbuilder: detail: clear_page: pfn 0x1f15, mfn 0x1ddb0f
domainbuilder: detail: xc_dom_pfn_to_ptr_retcount: domU mapping: pfn 0x1f14+0x1
at 0x7fea46cdf000
domainbuilder: detail: start_info_x86_64: called
domainbuilder: detail: setup_hypercall_page: vaddr=0xffffffff80208000 pfn=0x208
domainbuilder: detail: domain builder memory footprint
domainbuilder: detail:    allocated
domainbuilder: detail:       malloc             : 10027 kB
domainbuilder: detail:       anon mmap          : 0 bytes
domainbuilder: detail:    mapped
domainbuilder: detail:       file mmap          : 9593 kB
domainbuilder: detail:       domU mmap          : 29856 kB
domainbuilder: detail: arch_setup_bootlate: shared_info: pfn 0x0, mfn 0xdfc99
domainbuilder: detail: shared_info_x86_64: called
domainbuilder: detail: vcpu_x86_64: called
domainbuilder: detail: vcpu_x86_64: cr3: pfn 0x1f17 mfn 0x1ddb0d
domainbuilder: detail: launch_vm: called, ctxt=0x7fffdf91bd50
domainbuilder: detail: xc_dom_release: called
libxl: debug: libxl_device.c:257:libxl__device_disk_set_backend: Disk vdev=xvdb
spec.backend=phy
libxl: debug: libxl_device.c:188:disk_try_backend: Disk vdev=xvdb, uses
script=... assuming phy backend
libxl: debug: libxl_event.c:559:libxl__ev_xswatch_register: watch w=0x9d8548
wpath=/local/domain/0/backend/vbd/2/51728/state token=3/0: register slotnum=3
libxl: debug: libxl_device.c:257:libxl__device_disk_set_backend: Disk vdev=xvda
spec.backend=phy
libxl: debug: libxl_event.c:559:libxl__ev_xswatch_register: watch w=0x9dfb98
wpath=/local/domain/0/backend/vbd/2/51712/state token=2/1: register slotnum=2
libxl: debug: libxl_create.c:1243:do_domain_create: ao 0x9d71f0: inprogress:
poller=0x9d6ba0, flags=i
libxl: debug: libxl_event.c:503:watchfd_callback: watch w=0x9d8548
wpath=/local/domain/0/backend/vbd/2/51728/state token=3/0: event
epath=/local/domain/0/backend/vbd/2/51728/state
libxl: debug: libxl_event.c:643:devstate_watch_callback: backend
/local/domain/0/backend/vbd/2/51728/state wanted state 2 ok
libxl: debug: libxl_event.c:596:libxl__ev_xswatch_deregister: watch w=0x9d8548
wpath=/local/domain/0/backend/vbd/2/51728/state token=3/0: deregister slotnum=3
libxl: debug: libxl_event.c:608:libxl__ev_xswatch_deregister: watch w=0x9d8548:
deregister unregistered
libxl: debug: libxl_device.c:959:device_hotplug: calling hotplug script:
/etc/xen/scripts/block-drbd add
libxl: debug: libxl_event.c:472:watchfd_callback: watch
epath=/local/domain/0/backend/vbd/2/51728/state token=3/0: empty slot
libxl: debug: libxl_event.c:503:watchfd_callback: watch w=0x9dfb98
wpath=/local/domain/0/backend/vbd/2/51712/state token=2/1: event
epath=/local/domain/0/backend/vbd/2/51712/state
libxl: debug: libxl_event.c:643:devstate_watch_callback: backend
/local/domain/0/backend/vbd/2/51712/state wanted state 2 ok
libxl: debug: libxl_event.c:596:libxl__ev_xswatch_deregister: watch w=0x9dfb98
wpath=/local/domain/0/backend/vbd/2/51712/state token=2/1: deregister slotnum=2
libxl: debug: libxl_event.c:608:libxl__ev_xswatch_deregister: watch w=0x9dfb98:
deregister unregistered
libxl: debug: libxl_device.c:959:device_hotplug: calling hotplug script:
/etc/xen/scripts/block add
libxl: debug: libxl_event.c:472:watchfd_callback: watch
epath=/local/domain/0/backend/vbd/2/51712/state token=2/1: empty slot
    (It just hangs at this point)
    
    
On the server's console I get:
    e1000 0000:04:02.0 eth2: Detected Tx Unit Hang
      Tx Queue             <0>
      TDH                  <0>
      TDT                  <2>
      next_to_use          <2>
      next_to_clean        <0>
    buffer_info[next_to_clean]
      time_stamp           <100002ef6>
      next_to_watch        <0>
      jiffies              <1000034d3>
      next_to_watch.status <0>
looping over and over again, and then as mentioned above, the server 
hangs.  I have modified /etc/xen/scripts/block-drbd as per a xen bug 
report (I cannot recall at the moment which one), but the change was:
 case $t in 
      drbd)
      
      
to become
 case $t in 
      drbd|phy)
Any help will be greatly appreciated.
Regards,
Jo.