search for: req_cons

Displaying 20 results from an estimated 60 matches for "req_cons".

2013 Feb 06
0
[PATCH 1/4] xen/netback: shutdown the ring if it contains garbage.
...uot;); + netdev_err(vif->dev, "Missing extra info\n"); + netbk_fatal_tx_err(vif); return -EBADR; } @@ -1104,8 +1116,9 @@ static int xen_netbk_get_extras(struct xenvif *vif, if (unlikely(!extra.type || extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) { vif->tx.req_cons = ++cons; - netdev_dbg(vif->dev, + netdev_err(vif->dev, "Invalid extra type: %d\n", extra.type); + netbk_fatal_tx_err(vif); return -EINVAL; } @@ -1121,13 +1134,15 @@ static int netbk_set_skb_gso(struct xenvif *vif, struct xen_netif_extra_info *gso) {...
2010 Aug 03
1
oops when access xenstore in hvm guest
...nd event channel, then i wrapped writing and reading function to operate it ,but it came to oops:     struct xenstore_domain_interface {     char req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */     char rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */     XENSTORE_RING_IDX req_cons, req_prod;     XENSTORE_RING_IDX rsp_cons, rsp_prod;     };     struct xenstore_domain_interface *xenstore;     xen_hvm_param_t param;     param.domid = DOMID_SELF;     param.index = HVM_PARAM_STORE_PFN;     if ( hypercall_hvm_op(HVMOP_get_param, &param) )         BUG();     xenstore = (void *)...
2013 Feb 11
0
[xen-unstable test] 16014: regressions - FAIL
...he ring writer because the only use made of the unmasked value is the check which prevents the prod pointer overtaking the cons pointer. A ring peer which defeats this check will suffer only lost data. However, additionally, precautions need to be taken to ensure that req_cons and req_prod are only read once in each function. Without the use of volatile or some asm construct, the compiler can "prove" that req_cons and req_prod do not change unexpectedly and is permitted to "amplify" the read of (say) req_cons into two reads at different...
2007 Nov 10
3
ring.h notification hold-off question
...wrapping the ring indexes. a) to make sure: ring idx integer-wraps do happen, right? asking because the only mask operations i can find are those in the GET_REQUEST/RESPONSE macros. b) if __old were UINT_MAX, then the consumer side might/would set req_event to 0 after catching up right? (req_cons(== req_prod)+1) now assume __new == __old + 2 then we had req_event [0] < __new [1] < __old [INT_MAX] i.e. __new - req_event [1] > __new - __old [-1] i.e. _notify=false, which i believe skips a wanted notification. c) the case __old < __new < req_event (no wr...
2013 Jul 09
20
[PATCH 1/1] xen/netback: correctly calculate required slots of skb.
...owing calculation for required slot in netbk_gop_skb. In netbk_gop_skb, required slots are calculated based on offset and len in page of header data. It is possible that required slots here is larger than the one calculated in earlier netbk_count_requests. This inconsistency directly results in rx_req_cons_peek and xen_netbk_rx_ring_full judgement are wrong. Then it comes to situation the ring is actually full, but netback thinks it is not and continues to create responses. This results in response overlaps request in the ring, then grantcopy gets wrong grant reference and throws out error, for exam...
2011 May 02
32
[PATCH] blkback: Fix block I/O latency issue
In blkback driver, after I/O requests are submitted to Dom-0 block I/O subsystem, blkback goes to ''sleep'' effectively without letting blkfront know about it (req_event isn''t set appropriately). Hence blkfront doesn''t notify blkback when it submits a new I/O thus delaying the ''dispatch'' of the new I/O to Dom-0 block I/O subsystem. The new I/O is
2015 Dec 31
0
[PATCH v2 34/34] xen/io: use virt_xxx barriers
...ING_IDX)(__new - (_r)->sring->rsp_event) < \ (RING_IDX)(__new - __old)); \ } while (0) @@ -271,7 +271,7 @@ struct __name##_back_ring { \ (_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \ if (_work_to_do) break; \ (_r)->sring->req_event = (_r)->req_cons + 1; \ - mb(); \ + virt_mb(); \ (_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \ } while (0) @@ -279,7 +279,7 @@ struct __name##_back_ring { \ (_work_to_do) = RING_HAS_UNCONSUMED_RESPONSES(_r); \ if (_work_to_do) break; \ (_r)->sring-...
2015 Dec 30
0
[PATCH 32/34] xen/io: use __smp_XXX barriers
...ING_IDX)(__new - (_r)->sring->rsp_event) < \ (RING_IDX)(__new - __old)); \ } while (0) @@ -271,7 +271,7 @@ struct __name##_back_ring { \ (_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \ if (_work_to_do) break; \ (_r)->sring->req_event = (_r)->req_cons + 1; \ - mb(); \ + __smp_mb(); \ (_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \ } while (0) @@ -279,7 +279,7 @@ struct __name##_back_ring { \ (_work_to_do) = RING_HAS_UNCONSUMED_RESPONSES(_r); \ if (_work_to_do) break; \ (_r)->sring...
2013 Jun 24
3
[PATCH v2] xen-netback: add a pseudo pps rate limit
...txreq.size > vif->remaining_credit && tx_credit_exceeded(vif, txreq.size)) { @@ -1478,6 +1523,7 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk) } vif->remaining_credit -= txreq.size; + vif->remaining_packets--; work_to_do--; vif->tx.req_cons = ++idx; diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c index 410018c..7c55bed 100644 --- a/drivers/net/xen-netback/xenbus.c +++ b/drivers/net/xen-netback/xenbus.c @@ -267,15 +267,18 @@ static void frontend_changed(struct xenbus_device *dev, static void xen_ne...
2012 Aug 16
0
[RFC v1 5/5] VBD: enlarge max segment per request in blkfront
...seg_req = req->u.rw.seg; } + +void copy_blkif_seg_req_v2(struct xen_blkif *blkif) +{ + struct blkif_request_header *req = (struct blkif_request_header *)blkif->req; + struct blkif_segment_back_ring *blk_segrings = &blkif->blk_segrings; + int i; + RING_IDX rc; + + rc = blk_segrings->req_cons; + for (i = 0; i < req->u.rw.nr_segments; i++) { + memcpy(&blkif->seg_req[i], RING_GET_REQUEST(blk_segrings, rc++), + sizeof(struct blkif_request_segment)); + } + blk_segrings->req_cons = rc; +} + /* * Function to copy the from the ring buffer the ''struct blkif_reques...
2013 Apr 30
6
[PATCH net-next 2/2] xen-netback: avoid allocating variable size array on stack
...-) diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index c44772d..c6dc084 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -934,11 +934,15 @@ static int netbk_count_requests(struct xenvif *vif, RING_IDX cons = vif->tx.req_cons; int slots = 0; int drop_err = 0; + int keep_looping; if (!(first->flags & XEN_NETTXF_more_data)) return 0; do { + struct xen_netif_tx_request dropped_tx = { 0 }; + int cross_page = 0; + if (slots >= work_to_do) { netdev_err(vif->dev, "Asked for %d...
2008 May 30
5
[PATCH 1/4] pvSCSI driver
pvSCSI backend driver Signed-off-by: Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com> Signed-off-by: Jun Kamada <kama@jp.fujitsu.com> ----- Jun Kamada _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
2011 Jun 21
13
VM disk I/O limit patch
...o_block_io_op(blkif_t *blkif) { blkif_back_rings_t *blk_rings = &blkif->blk_rings; @@ -314,15 +351,27 @@ static int do_block_io_op(blkif_t *blkif pending_req_t *pending_req; RING_IDX rc, rp; int more_to_do = 0, ret; + static int last_done_nr_sects = 0; rc = blk_rings->common.req_cons; rp = blk_rings->common.sring->req_prod; rmb(); /* Ensure we see queued requests up to ''rp''. */ + + if (blkif->reqmin && blkif->reqcount <= 0) + return (rc != rp) ? 2 : 0; while ((rc != rp) || (blkif->is_suspended_req)) { if (RING_REQUEST_C...
2011 Jun 21
13
VM disk I/O limit patch
...o_block_io_op(blkif_t *blkif) { blkif_back_rings_t *blk_rings = &blkif->blk_rings; @@ -314,15 +351,27 @@ static int do_block_io_op(blkif_t *blkif pending_req_t *pending_req; RING_IDX rc, rp; int more_to_do = 0, ret; + static int last_done_nr_sects = 0; rc = blk_rings->common.req_cons; rp = blk_rings->common.sring->req_prod; rmb(); /* Ensure we see queued requests up to ''rp''. */ + + if (blkif->reqmin && blkif->reqcount <= 0) + return (rc != rp) ? 2 : 0; while ((rc != rp) || (blkif->is_suspended_req)) { if (RING_REQUEST_C...
2012 Aug 16
0
[RFC v1 3/5] VBD: enlarge max segment per request in blkfront
...et_x86_64_req(&req, RING_GET_REQUEST(&blk_rings->x86_64, rc)); - break; - default: - BUG(); - } + blkif->ops->copy_blkif_req(blkif, rc); + + blkif->ops->copy_blkif_seg_req(blkif); + blk_rings->common.req_cons = ++rc; /* before make_response() */ /* Apply all sanity checks to /private copy/ of request. */ barrier(); - if (unlikely(req.operation == BLKIF_OP_DISCARD)) { + if (unlikely(req->operation == BLKIF_OP_DISCARD)) { free_req(pending_req); -...
2008 Mar 10
12
[RFC][PATCH] Use ioemu block drivers through blktap
When I submitted the qcow2 patch for blktap, suggestions came up that the qemu block drivers should be used also for blktap to eliminate the current code duplication in ioemu and blktap. The attached patch adds support for a tap:ioemu pseudo driver. Devices using this driver won''t use tapdisk (containing the code duplication) any more, but will connect to the qemu-dm of the domain. In
2013 Jul 15
6
[PATCH 0 of 6 RESEND v2] blktap3/sring: shared ring between tapdisk and the front-end
This patch series introduces the shared ring used by the front-end to pass request descriptors to tapdisk, as well as responses from tapdisk to the front-end. Requests from this ring end up in tapdisk''s standard request queue. When the tapback daemon detects that the front-end tries to connect to the back-end, it spawns a tapdisk and tells it to connect to the shared ring. The shared
2007 Apr 23
27
[PATCH 00/25] xen: Xen implementation for paravirt_ops
Hi Andi, This series of patches implements the Xen paravirt-ops interface. It applies to 2.6.21-rc7 + your patches + the last batch of pv_ops patches I posted. This patch generally restricts itself to Xen-specific parts of the tree, though it does make a few small changes elsewhere. These patches include: - some helper routines for allocating address space and walking pagetables - Xen
2007 Apr 23
27
[PATCH 00/25] xen: Xen implementation for paravirt_ops
Hi Andi, This series of patches implements the Xen paravirt-ops interface. It applies to 2.6.21-rc7 + your patches + the last batch of pv_ops patches I posted. This patch generally restricts itself to Xen-specific parts of the tree, though it does make a few small changes elsewhere. These patches include: - some helper routines for allocating address space and walking pagetables - Xen
2007 May 11
30
[patch 00/28]xen: Xen implementation for paravirt_ops
Hi Andi, This series of patches implements the Xen paravirt-ops interface. It applies to 2.6.21-git13 + patches-2.6.21-git7-070507-1.tar.gz (I think "unwinder" is the only patch which doesn't apply to git13, and the sched-clock patches are the only ones which this series actually needs). Changes since the last posting: - More netfront review and cleanup - Added ability to