As it stands grant entries for the actual data are mapped in bulk.
If one of the earlier entries fail to be mapped, it can cause all
subsequent entries to be leaked if they were successfully mapped.
This patch changes it so that we will continue to reap grant entries
even when an error is detected.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Information is located under /sys/devices/system/memory.
Original patch from Satoshi UCHIDA <s-uchida@ap.jp.nec.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
interface is blocked for longer than 500ms. This avoids deadlock
situations where interfaces cannot be destroyed because some other
dormant interface is holding resources.
Signed-off-by: Christopher Clark <christopher.clark@cl.cam.ac.uk>
Signed-off-by: Keir Fraser <keir@xensource.com>
The blkback code checks first_sect by computing last_sect - first_sect
+ 1. If this is not positive then the request is
rejected. Unfortunately, the calculation is stored in an unsigned
integer before the check is made so negative values will not be
rejected.
This patch fixes this by explicitly comparing first_sect with
last_sect.
The blktap code is similar but it stores the difference in a signed
integer so it's okay.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
As it is blkback verifies the metadata from the frontend in place.
This means we run the risk of the frontend changing the data after
we've verified it. This patch copies the data onto the stack before
verifying and using it to ensure we see a consistent snapshot.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
As it stands grant entries for the actual data are mapped in bulk.
If one of the earlier entries fail to be mapped, it can cause all
subsequent entries to be leaked if they were successfully mapped.
This patch changes it so that we will continue to reap grant entries
even when an error is detected.
There is still a potential leak if create_lookup_pte_addr fails
in fast_flush_area. This leak is not affected by this patch.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
The function dispatch_rw_block_io may call fast_flush_area even before
a pending request has been initialised. This patch deletes that call.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
The dispatch_rw_block_io may call fast_flush_area twice if
create_lookup_pte_addr fails (there is a flush call at fail_flush
already). The second call simply causes warnings to be printed
on the console. This patch removes the duplicate call.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
As it is blktap verifies the metadata from the frontend in place.
This means we run the risk of the frontend changing the data after
we've verified it. This patch copies the data onto the stack before
verifying and using it to ensure we see a consistent snapshot.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
is shutting down (call to xenbus_frontend_closed()). Also the driver
now waits longer until an outstanding response has been received (to
support a busy system). Moves the 'Unknown' state with the other
states that are not used by the TPM frontend.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
to watch for creation of the handle node in xenstore, as it is
written by xend when creating the backend directory as part of
the same transaction.
Signed-off-by: Keir Fraser <keir@xensource.com>
We need to make a copy of data from tx_ring before
verifying them as otherwise what we end up using may
be different from what was verified.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
First, auto-translate guests can use remap_pfn_range() rather than
direct_remap_pfn_range(). This actually works better because
remap_pfn_range() can legitimately assert VM_PFNMAP (this patch
removes this flag for direct_remap_pfn_range().
There are various cleanups and fixes to the privcmd interface:
1. VMAs should be searched and used under the mmap semaphore
2. Mapping should be single shot (since cirect_remap_pfn_range()
expects the PTEs to be empty when it is called).
3. Demand-fault population of the privcmd vma should be disallowed.
4. Various others, including a more thorough check of input args.
Signed-off-by: Keir Fraser <keir@xensource.com>
This turns out to be dangerous as packets can be queued indefinitely,
introducing resource dependencies between guests (if the queued
packets originate from another virtual machine). For example, this
can prevent interfaces from being torn down and hence defunct
virtual machines from being destroyed.
The queuing functionality is retained as a module option, but a
warning is printed if it is enabled. It is not intended for general use!
Signed-off-by: Keir Fraser <keir@xensource.com>
Also update the code in tools to create the device node if udev fails.
The tools now read the sysfs system to find the minor number needed.
Original patch from Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
blktap_poll is calling tlb_flush_all() in its main ring buffer polling
loop. This seems to be superfluous: the hypervisor should be
performing
any necessary tlb flushes on grant table operations performed by the
back-end. Even a simple memory barrier is unnecessary here as the
RING_PUSH_REQUESTS() call performs a wmb() anyway.
And tlb_flush_all() is not exported to modules, so this call prevents
blktap from building as a module. Just remove it.
Signed-off-by: Stephen Tweedie <sct@redhat.com>
notifications during shutdown. When rootfs goes away this can
cause the system to hang, as we notify userspace etc.
Instead we forcibly reset the state machine back to state Closed
if we are a frontend driver, to get the backend to release
resources. Necessary if we are going to kexec.
Signed-off-by: Keir Fraser <keir@xensource.com>