search for: nomerge

Displaying 12 results from an estimated 12 matches for "nomerge".

2020 Jul 28
2
_mm_lfence in both pathes of an if/else are hoisted by SimplfyCFG potentially breaking use as a speculation barrier
...mbly. SimplifyCFG still merged those. But gcc did not. https://godbolt.org/z/acnPxY void bar(); void baz(); void foo(int c) { if (c) { __asm__ __volatile ("lfence"); bar(); } else { __asm__ __volatile ("lfence"); baz(); } } I believe the [[clang::nomerge]] attribute was recently extended to inline assembly which can be used to prevent the inline assembly from being hoisted by SimplifyCFG https://reviews.llvm.org/D84225 It also appears to work for intrinsic version, but I think its limited to C++ only. Is there some existing property we can put...
2020 Aug 09
2
_mm_lfence in both pathes of an if/else are hoisted by SimplfyCFG potentially breaking use as a speculation barrier
...> > void foo(int c) { > > if (c) { > > __asm__ __volatile ("lfence"); > > bar(); > > } else { > > __asm__ __volatile ("lfence"); > > baz(); > > } > > } > > > > I believe the [[clang::nomerge]] attribute was recently extended to inline assembly which can be used to prevent the inline assembly from being hoisted by SimplifyCFG https://reviews.llvm.org/D84225 It also appears to work for intrinsic version, but I think its limited to C++ only. > > > > Is there some existing p...
2012 Oct 07
0
rsync patch
...d by the kernel six times, so without adjusting the SCSI command timeout rsync (or anything in userspace) will be waiting three minutes after each error. Five seconds is long enough to exceed the USB bus reset cycle. Additionally, it is probably wise to set nr_requests to 1, readahead_kb to 0 and nomerges to 1 for the affected drive. Feedback on the patch is appreciated. Sincerely, Steve Thompson
2015 Nov 06
3
How does -fPIE get passed from clang to llc when run on a .ll file?
On Fri, Nov 6, 2015 at 11:10 AM, Tim Northover <t.p.northover at gmail.com> wrote: > On 6 November 2015 at 11:00, Phil Tomson <phil.a.tomson at gmail.com> wrote: > > With 3.6 I get an unused argument warning with -enable-pie: > > > > $ clang -v -emit-llvm -enable-pie -O0 -S global_dat.c -o > > global_dat_x86_pie.ll > > Yes, it's an llc option not a
2012 Jun 18
13
[PATCH v2 0/3] Improve virtio-blk performance
This patchset implements bio-based IO path for virito-blk to improve performance. Fio test shows it gives, 28%, 24%, 21%, 16% IOPS boost and 32%, 17%, 21%, 16% latency improvement for sequential read/write, random read/write respectively. Asias He (3): block: Introduce __blk_segment_map_sg() helper block: Add blk_bio_map_sg() helper virtio-blk: Add bio-based IO path for virtio-blk
2012 Jun 18
13
[PATCH v2 0/3] Improve virtio-blk performance
This patchset implements bio-based IO path for virito-blk to improve performance. Fio test shows it gives, 28%, 24%, 21%, 16% IOPS boost and 32%, 17%, 21%, 16% latency improvement for sequential read/write, random read/write respectively. Asias He (3): block: Introduce __blk_segment_map_sg() helper block: Add blk_bio_map_sg() helper virtio-blk: Add bio-based IO path for virtio-blk
2018 May 23
3
[PATCH] block drivers/block: Use octal not symbolic permissions
...ow = queue_show_nonrot, .store = queue_store_nonrot, }; static struct queue_sysfs_entry queue_zoned_entry = { - .attr = {.name = "zoned", .mode = S_IRUGO }, + .attr = {.name = "zoned", .mode = 0444 }, .show = queue_zoned_show, }; static struct queue_sysfs_entry queue_nomerges_entry = { - .attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR }, + .attr = {.name = "nomerges", .mode = 0644 }, .show = queue_nomerges_show, .store = queue_nomerges_store, }; static struct queue_sysfs_entry queue_rq_affinity_entry = { - .attr = {.name = "rq_af...
2018 May 23
3
[PATCH] block drivers/block: Use octal not symbolic permissions
...ow = queue_show_nonrot, .store = queue_store_nonrot, }; static struct queue_sysfs_entry queue_zoned_entry = { - .attr = {.name = "zoned", .mode = S_IRUGO }, + .attr = {.name = "zoned", .mode = 0444 }, .show = queue_zoned_show, }; static struct queue_sysfs_entry queue_nomerges_entry = { - .attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR }, + .attr = {.name = "nomerges", .mode = 0644 }, .show = queue_nomerges_show, .store = queue_nomerges_store, }; static struct queue_sysfs_entry queue_rq_affinity_entry = { - .attr = {.name = "rq_af...
2020 Sep 07
2
[RFC] Introducing the maynotprogress IR attribute
On 9/7/20 10:56 AM, Nicolai Hähnle wrote: > Hi Johannes and Atmn, > > On Sat, Sep 5, 2020 at 7:07 AM Johannes Doerfert via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >>  > In any case, please explain the intended behavior of the attribute and >>  > the metadata upon inlining. >> >> The attribute will be attached to the caller upon
2020 Sep 07
4
[RFC] Introducing the maynotprogress IR attribute
...ributes _allow_ > program transforms instead. The only other example I can think of > right now is "convergent". An incomplete list of function attributes that disable transformations (not actually checked but I expect them too):   cold, convergent, noduplicate, noimplicitfloat, nomerge, noinline,   nobuiltin, null_pointer_is_valid, optsize, optnone, returns_twice,   "thunk" Similarly there are parameter attributes that prevent transformations. >>  > Assuming the simple flip of polarity from the previous paragraph, what >>  > is the difference be...
2012 Apr 20
1
[PATCH] multiqueue: a hodge podge of things
...ntegrity_merge_bio(q, req, bio)) @@ -214,75 +217,77 @@ static inline int ll_new_hw_segment(struct request_queue *q, /* * This will form the start of a new hw segment. Bump both * counters. */ req->nr_phys_segments += nr_phys_segs; return 1; no_merge: req->cmd_flags |= REQ_NOMERGE; - if (req == q->last_merge) - q->last_merge = NULL; + if (req == ctx->last_merge) + ctx->last_merge = NULL; return 0; } -int ll_back_merge_fn(struct request_queue *q, struct request *req, +int ll_back_merge_fn(struct blk_queue_ctx *ctx, struct request *req, struct bio *b...
2012 Apr 20
1
[PATCH] multiqueue: a hodge podge of things
...ntegrity_merge_bio(q, req, bio)) @@ -214,75 +217,77 @@ static inline int ll_new_hw_segment(struct request_queue *q, /* * This will form the start of a new hw segment. Bump both * counters. */ req->nr_phys_segments += nr_phys_segs; return 1; no_merge: req->cmd_flags |= REQ_NOMERGE; - if (req == q->last_merge) - q->last_merge = NULL; + if (req == ctx->last_merge) + ctx->last_merge = NULL; return 0; } -int ll_back_merge_fn(struct request_queue *q, struct request *req, +int ll_back_merge_fn(struct blk_queue_ctx *ctx, struct request *req, struct bio *b...