libxl: Add qxl vga interface support for upstream qemu

Usage:
  vga="qxl"

Changes from v15:
- refresh

Changes from v14:
- refresh
- small code impromevents on libxl_dm.c

Changes from v13:
- refresh
- update qemu parameters (from -vga to -device)

NOTE:
Seems needed other changes/fixes on xen side before
have it full working.
After latest Jan Beulich patches doesn't show any other
visible xen errors (at least I can't see them).

Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>
Signed-off-by: Zhou Peng <zpengxen@gmail.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
Hvmloader: Modify ACPI to only supply _EJ0 methods for PCIslots that support hotplug by runtime patching

In Xen platform, after using upstream qemu, the all of pci devices will show
hotplug in the windows guest. In this situation, the windows guest may occur
blue screen when VM' user click the icon of VGA card for trying unplug VGA card.
However, we don't hope VM's user can do such dangerous operation, and showing
all pci devices inside the guest OS is unfriendly.

This is done by runtime patching:
  - Rename _EJ0 methods for PCI slots in DSDT to EJ0_:note that this has the
    same checksum, but is ignored by OSPM.
  - At compile time, look for these methods in ASL source,find the matching AML,
    and store the offsets of these methods in a table named aml_ej0_data.
  - At run time, go over aml_ej0_data, check which slots not support hotplug and
    patch the ACPI table, replacing _EJ0 with EJ0_.

Signed-off-by: Gaowei <gao.gaowei@huawei.com>
Signed-off-by: Gonglei <arei.gonglei@huawei.com>
libxl: add basic spice support for pv domUs

This patch adds basic spice support for pv domUs.
The qemu parameters are the same as the hvm ones and they works.
Therefore xl cfg paramters are the same as the hvm ones except that
features not supported yet by pv domUs (vdagent and usbredirection)
are kept disabled by default.
It also enables vfb and vkb required to have basic spice working.

Note: this patch is only a draft and needs to be improved.
Patch v3 is tested and working, except for the pointer not
visible but working.
Patch v4 is not tested now and I now use the api for test
the u.hvm.spice retro-compatibility.
Any feedback is appreciated.

Signed-off-by: Fabio Fantoni <fabio.fantoni@m2r.biz>

---

Changes in v5:
- libxl__need_xenpv_qemu to true also if spice is enabled
- libxl_create.c: don't copy u.hvm.spice in the newer if
  the newer is already used
- xl_cmdimpl.c: parse all spice options out of hvm part
  and the features not supported will be disabled and will
  show a warning about them if was setted enabled

Changes in v4:
- added libxl.h changes
- libxl_create.c: added older u.hvm.spice compatibility
  copying it in newer one

Changes in v3:
- xl.cfg.pod.5: moved spice out of hvm section and specified
  the features for now hvm only.
- libxl_types.idl: added spice struct out of keyedunion hvm only.
- use new generic spice struct instead of hvm only ones.

Changes in v2:
- xl_cmdimpl.c: always set vnc and sdl toplevel parameters in &vfb
  with vnc or spice enabled on pv domUs otherwise in some cases it
  would fail with error for one bool default value missing.
- libxl_dm.c: do not add -nographic if spice is enabled, even though
  -nographic seems buggy in upstream qemu.