for unprivileged domains (in any case, can fall back to swiotlb).
On non-privileged domain of Xen/IA64, this caused some trouble.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
when reconnecting to backend driver (e.g., after save/restore or migrate).
Two main reasons for this:
1. The retransmit code is broken for fragmented packets. It would need
a rewrite to cope with the new scatter-gather format.
2. We will drop packets anyway, in both directions (e.g., takes some
time for received packets to be redirected to new virtual interface;
also further transmitted packets from the network stack are dropped
after we call netif_carrier_off(), so even if we retransmite what's
already in the ring it is likely that some subsequent packets will
already be lost).
If this causes downtimes that are too long (particularly for live
relocation) then the whole strategy for buffering packets while the
frontend-backend connection is severed needs to be considered.
Signed-off-by: Keir Fraser <keir@xensource.com>
1. We must ensure gnttab callbacks are disabled and all work
flushed before tearing down device state. A new gnttab interface
call is added for this purpose.
2. blkif_free() must check for a request_queue before deref'ing it.
Signed-off-by: Keir Fraser <keir@xensource.com>
after the device-specific resume code has run. Also removed some unused /
usless code from netfront.c.
Signed-off-by: Steven Hand <steven@xensource.com>
The logic now mimics native x86 behaviour: a request to change
affinity via /proc is held until the next interrupt on that
event channel. So /proc/irq/n/smp_affinity may not change
immediately!
Other notes:
1. CPU-specific interrupts silently ignore requests to change
affinity. For example, resched0, timer0, callfunc0, ...
2. Reading smp_affinity always returns a cpumask containing
a single cpu. An event channel can only be bound to a single
cpu at a time. Neither Xen nor XenLinux implement IRQ
balancing: requires a user-space balancing daemon.
Signed-off-by: Keir Fraser <keir@xensource.com>
xenbus_transaction_t -> struct xenbus_transaction, which just contains
a single u32. Also renamed XBT_NULL to XBT_NIL to emphasize that it
isn't a NULL pointer, but a NIL transaction ID. Compile and boot tested.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
[chrisw: updated for xen-unstable from patchqueue]
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
instead, since that's what it is there for. Similar to patch
in patchqueue started by Jeremy, and expanded by me to include all
relevant drivers in xen-unstable.
Cc: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
EXPORTs with functions, order includes, eliminate unsed macros, don't
initialize static data to NULL, etc. Cleanups from patchqueue.
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
While there rearrange the ring setup order slightly to simplify error
path since netif_free() will cleanup once ring_ref is valid. And use
get_zeroed_page() instead of __get_free_page()/memset(). Handle error if
bind_evtchn_to_irqhandler() fails, as bad info->irq value is likely to
cause oops later. In create_device(), gnttab_free_grant_references()
is accidentally called twice on tx_head during cleanup from failed
gnttab_alloc_grant_references() on rx_head, which could corrupt
gnttab_free_count.
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
As discussed previously, the these operations are not performance-sensitive, so
the additional cache footprint shouldn't be an issue.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
This patch adds scatter-and-gather transmission support to the frontend.
This allows the MTU to be raised right now and the potential for TSO in
future.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This patch adds scatter-and-gather support to the backend. It also
advertises this fact through xenbus so that the frontend can detect
this and send through SG requests only if it is supported.
SG support is required to support skb's larger than one page. This
in turn is needed for either jumbo MTU or TSO. One of these is
required to bring local networking performance up to a level that
is acceptable.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Must ensure ring is written to before producer index is incremented.
Bug diagnosed by Ky Srinivasan <ksrinivasan@novell.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
Just like the standard loopback device, SG support here is innate.
So all we need to do is mark it as such and zero the change_mtu method
so that the MTU can be changed at will.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
is extended to include high-order address bits at bottom of %cr3 value.
Guests who understand this interface change publish the fact by setting the
option 'PAE=yes[extended-cr3]' in their __xen_guest section.
Signed-off-by: Keir Fraser <keir@xensource.com>
This patch converges the ia64-specific and general versions of
xen/drivers/Makefile and xen/drivers/core/Makefile, using Kconfig
settings instead to control whether specific pieces are built.
Signed-off-by: Aron Griffis <aron@hp.com>
Experimentation an discussion on xen-devel concludes that a dynamic method
for determining safe balloon size will be required.
Signed-off-by: Keir Fraser <keir@xensource.com>
The function cpu_is_allowed() appears that it should return a boolean
but in fact returns zero on success and an errno on failure. Thus
rename it to the more vague cpu_up_check(), in line with its return
value and thge fact it has unspecified side effects.
Fix the macro definition of cpu_up_check() when building non-hotplug
kernel to return zero rather than one (which always failed secondary
cpu bringup!).
Signed-off-by: Keir Fraser <keir@xensource.com>
The tristate backend_state really only needs to be a boolean. In fact
other virtualisation network drivers such as the s390 already model this
using netif_carrier_*. So by converting backend_state over to the net
carrier flag we can tap into existing infrastructure rather than creating
new ones.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Cleaner and allows use by architectures which aren't currently
using Xen's smpboot.c.
Based on an original patch by Tristan Gingold.
Signed-off-by: Keir Fraser <keir@xensource.com>
Since network_tx_buf_gc unconditionally calls network_maybe_wake_tx at
the end, there is no need to call it again right after a call to
network_tx_buf_gc.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
initialising a Xen-specific driver or subsystem.
For ia64:
* Call xen_init in setup_arch.
* Remove xen_ksyms.c
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>