bigos: disable PEBS support

Forbid any use of PEBS because of the following problem:
PEBS use linear address to indicate where it stores the samlings.
When entering in guest mode, PEBS use the guest page table to
translate this linear address in physical address.
This translation can make the guest crash, or even corrupts ithe guest
data.
bigos: add a basic hotpage accounting

Hot pages, captured throught IBS, are now stored in a hotpage list.
A routine is called regularly to process this hotlist, out of irq
scope.
For now, the processing routine only print the hotlist.
bigos: fix an IBS lack for virtualization

For execution sampling, IBS can get the data linear and physical
addresses of the data (if memory op).
However in virtualization context, it brings the guest linear address
and the system physical address, but not the guest physical address.
Because we want the later to modify the system page table, we have to
read it in the guest page table (which is probably costly in an NMI
context).
bigos: add a hotlist unification and page-to-move finding

Add a hotlist unification mechanism in the migrator tasklet which
allow to find, for the entire system, what are the (at most)
BIGOS_MIGRATOR_MAXMOVE pages which have to be moved.
If a page have to be moved is decided by two values: it has to got a
minimum score in the hotlists (BIGOS_MIGRATOR_LCSCORE) of the node it
going to be moved on, and it has to be accessed at leat at
BIGOS_MIGRATOR_LOCRATE% by the cpus of the node it going to be moved
on.
bigos: fix a deadlock issue in the monitor

The IBS handler take a lock on the p2m to walk the guest page table.
If this lock is already taken by another function on the same cpu (let
us say memory_move() ...), then the interrupt will hang forever,
preventing the lock to be released.

Now the IBS handler try to take the lock and returns immediately
(loosing the sample) if it is already taken. Otherwise, it release it
and re-take it sometimes later in the interrupt handler.
bigos: fix a bug on the memory move

During the memory move, the moved source page was write-protected to
avoid modification during the copy to its destination page.
To write-protect the source page, the p2m_access_rx was applied to it.
However, in Xen, this is a soft state which can be reset to Xen
default access (p2m_access_rwx).

Now the type of the page is changed to p2m_ram_ro which is a hard
state. This type is indicated to silently drop writes, but we need to
catch these writes to make the accessing guest waiting the page is
moved.
Luckily, this silent drop is done in the page fault handler of the
VMEXIT, so we just have to catch the fault before it is dropped.
Merge branch 'develop' into hotpages-listing
bigos: refactor the monitor

Change the monitor implementation to allow parameters modifications at
runtime. Also change some poorly designed structures.
Add a function to remove a page from the hotlists when it is moved.
bigos: add a statistics accounting for monitor

Add some statistics accounting over various part of the migrator.
These statistics can be disabled at compile-time.
bigos: add a hotlist implementation

Add a clear API for a hotlist (LRU).
bigos: refactor the monitor part

Split the monitoring in three parts:
- the hotlist: a general purpose LRU tracker
- the migration engine: a global mechanism using hotlist to decide
  what page to migrate
- the sampling/queue: the IBS/PEBS interrupts + a migration queue used
  to retrieve only the gfn of pages which will be migrated

Also, remove the tasklet used to schedule decision and migrations,
this was making the guest stall half of the time. Replace it with an
hypercall which need to be performed for each decision/migration.
bigos: add a way to set parameters of memory migrtion at runtime

Add parameter modification methods across all subcomponents of memory
migration. These parameters are trnasmitted to Xen throught hypercalls
with the xen-automem program which also trigger migration decision
when needed. Also add a bunch of commentaries, remove useless empty
lines.
Merge branch 'hotlist' into develop