Lines Matching refs:xas
382 XA_STATE(xas, &ida->xa, min / IDA_BITMAP_BITS); in ida_alloc_range()
394 xas_lock_irqsave(&xas, flags); in ida_alloc_range()
396 bitmap = xas_find_marked(&xas, max / IDA_BITMAP_BITS, XA_FREE_MARK); in ida_alloc_range()
397 if (xas.xa_index > min / IDA_BITMAP_BITS) in ida_alloc_range()
399 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
407 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
411 xas_store(&xas, xa_mk_value(tmp)); in ida_alloc_range()
421 xas_store(&xas, bitmap); in ida_alloc_range()
422 if (xas_error(&xas)) { in ida_alloc_range()
430 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
437 xas_clear_mark(&xas, XA_FREE_MARK); in ida_alloc_range()
449 xas_store(&xas, bitmap); in ida_alloc_range()
452 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
453 if (xas_nomem(&xas, gfp)) { in ida_alloc_range()
454 xas.xa_index = min / IDA_BITMAP_BITS; in ida_alloc_range()
460 if (xas_error(&xas)) in ida_alloc_range()
461 return xas_error(&xas); in ida_alloc_range()
462 return xas.xa_index * IDA_BITMAP_BITS + bit; in ida_alloc_range()
464 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
468 xas_set(&xas, min / IDA_BITMAP_BITS); in ida_alloc_range()
472 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
486 XA_STATE(xas, &ida->xa, id / IDA_BITMAP_BITS); in ida_free()
493 xas_lock_irqsave(&xas, flags); in ida_free()
494 bitmap = xas_load(&xas); in ida_free()
505 xas_store(&xas, xa_mk_value(v)); in ida_free()
510 xas_set_mark(&xas, XA_FREE_MARK); in ida_free()
514 xas_store(&xas, NULL); in ida_free()
517 xas_unlock_irqrestore(&xas, flags); in ida_free()
520 xas_unlock_irqrestore(&xas, flags); in ida_free()
538 XA_STATE(xas, &ida->xa, 0); in ida_destroy()
542 xas_lock_irqsave(&xas, flags); in ida_destroy()
543 xas_for_each(&xas, bitmap, ULONG_MAX) { in ida_destroy()
546 xas_store(&xas, NULL); in ida_destroy()
548 xas_unlock_irqrestore(&xas, flags); in ida_destroy()