Property changes on: . ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys:r197476 Index: kern/kern_umtx.c =================================================================== --- kern/kern_umtx.c (revision 197973) +++ kern/kern_umtx.c (working copy) @@ -2556,6 +2556,7 @@ uint32_t flags; int32_t state, oldstate; int32_t blocked_writers; + int32_t blocked_readers; int error; uq = td->td_umtxq; @@ -2564,6 +2565,7 @@ if (error != 0) return (error); + blocked_readers = 0; for (;;) { state = fuword32(__DEVOLATILE(int32_t *, &rwlock->rw_state)); while (!(state & URWLOCK_WRITE_OWNER) && URWLOCK_READER_COUNT(state) == 0) { @@ -2575,8 +2577,18 @@ state = oldstate; } - if (error) + if (error) { + if (!(state & (URWLOCK_WRITE_OWNER|URWLOCK_WRITE_WAITERS)) && + blocked_readers != 0) { + umtxq_lock(&uq->uq_key); + umtxq_busy(&uq->uq_key); + umtxq_signal_queue(&uq->uq_key, INT_MAX, UMTX_SHARED_QUEUE); + umtxq_unbusy(&uq->uq_key); + umtxq_unlock(&uq->uq_key); + } + break; + } /* grab monitor lock */ umtxq_lock(&uq->uq_key); @@ -2627,7 +2639,9 @@ break; state = oldstate; } - } + blocked_readers = fuword32(&rwlock->rw_blocked_readers); + } else + blocked_readers = 0; umtxq_lock(&uq->uq_key); umtxq_unbusy(&uq->uq_key); Property changes on: dev/xen/xenpci ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/dev/xen/xenpci:r197476 Property changes on: contrib/pf ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/contrib/pf:r197476 Property changes on: contrib/dev/acpica ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/contrib/dev/acpica:r197476 Property changes on: cddl/contrib/opensolaris ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/cddl/contrib/opensolaris:r197476 Property changes on: amd64/include/xen ___________________________________________________________________ Modified: svn:mergeinfo Merged /head/sys/amd64/include/xen:r197476 Property changes on: sys ___________________________________________________________________ Added: svn:mergeinfo Merged /user/dfr/xenhvm/7/sys/sys:r188574-189614 Merged /user/mav/ata/sys/sys:r189793-190578 Merged /projects/cambria/sys/sys:r186008-186350 Merged /user/piso/sys/sys:r186543,186723,186725-186726,186742,186770-186771,186774,186777-186779,187984-187985,190555,190572,190589,190592,190614,190625,190830 Merged /user/piso/ipfw/sys/sys:r190918,190921,190923,190926 Merged /head/sys/sys:r196118,196121-196122,196129,196132,196135,196141-196142,196149-196150,196152,196159,196174,196176,196179,196193,196196,196200-196201,196203-196206,196224,196226,196228-196230,196234,196246,196256,196260,196263,196267-196269,196274,196276,196289,196291,196293,196295,196297,196299,196301,196303,196307,196309,196316,196318,196326,196332-196334,196342,196352-196353,196358,196364,196366,196368,196370,196372,196376,196378,196380,196386,196388,196390,196395,196397,196403-196404,196410,196412,196415,196417,196419,196423,196435,196455-196458,196460,196481-196482,196489,196498,196501-196505,196509-196510,196512,196516-196520,196529,196531-196536,196547,196551,196553,196556,196559-196560,196567-196569,196579,196592,196608-196610,196633,196635,196637,196640,196643-196644,196648-196649,196653,196655-196657,196659-196660,196662,196678,196689,196692,196702-196703,196705,196707,196714,196717,196721,196730,196733,196738,196745,196772,196777,196785,196796,196809,196822-196824,196835,196864-196865,196871,196887-196889,196893,196919-196921,196927,196932,196943-196944,196947,196953-196954,196965-196966,196978-196980,196982,196985,196993,197030-197031,197039-197040,197046,197048-197049,197062,197073-197074,197077-197080,197099,197129-197133,197150-197153,197156,197167,197172-197173,197176-197177,197190,197193,197195,197201-197203,197208,197210,197212,197218-197219,197223-197225,197227,197235,197257,197260-197263,197269,197287,197289,197341,197348,197350-197351,197364,197390,197395,197401-197403,197406,197410,197413,197415,197426,197449,197458-197459,197461-197465,197476,197490,197497,197512-197515,197525,197535,197580-197581,197583-197584,197644-197645,197654,197657,197659-197663,197682-197683,197687,197695-197696,197709,197711,197721,197727,197730,197795,197814 Merged /user/thompsa/usb/sys/sys:r187190 Merged /head/sys:r197476 Merged /user/dfr/xenhvm/6/sys/sys:r189304,189451 Merged /user/peter/kinfo/sys/sys:r185413-185547