Lines Matching refs:xas
383 XA_STATE(xas, &ida->xa, min / IDA_BITMAP_BITS); in ida_alloc_range()
395 xas_lock_irqsave(&xas, flags); in ida_alloc_range()
397 bitmap = xas_find_marked(&xas, max / IDA_BITMAP_BITS, XA_FREE_MARK); in ida_alloc_range()
398 if (xas.xa_index > min / IDA_BITMAP_BITS) in ida_alloc_range()
400 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
408 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
412 xas_store(&xas, xa_mk_value(tmp)); in ida_alloc_range()
422 xas_store(&xas, bitmap); in ida_alloc_range()
423 if (xas_error(&xas)) { in ida_alloc_range()
431 if (xas.xa_index * IDA_BITMAP_BITS + bit > max) in ida_alloc_range()
438 xas_clear_mark(&xas, XA_FREE_MARK); in ida_alloc_range()
450 xas_store(&xas, bitmap); in ida_alloc_range()
453 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
454 if (xas_nomem(&xas, gfp)) { in ida_alloc_range()
455 xas.xa_index = min / IDA_BITMAP_BITS; in ida_alloc_range()
461 if (xas_error(&xas)) in ida_alloc_range()
462 return xas_error(&xas); in ida_alloc_range()
463 return xas.xa_index * IDA_BITMAP_BITS + bit; in ida_alloc_range()
465 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
469 xas_set(&xas, min / IDA_BITMAP_BITS); in ida_alloc_range()
473 xas_unlock_irqrestore(&xas, flags); in ida_alloc_range()
489 XA_STATE(xas, &ida->xa, id / IDA_BITMAP_BITS); in ida_free()
496 xas_lock_irqsave(&xas, flags); in ida_free()
497 bitmap = xas_load(&xas); in ida_free()
508 xas_store(&xas, xa_mk_value(v)); in ida_free()
513 xas_set_mark(&xas, XA_FREE_MARK); in ida_free()
517 xas_store(&xas, NULL); in ida_free()
520 xas_unlock_irqrestore(&xas, flags); in ida_free()
523 xas_unlock_irqrestore(&xas, flags); in ida_free()
542 XA_STATE(xas, &ida->xa, 0); in ida_destroy()
546 xas_lock_irqsave(&xas, flags); in ida_destroy()
547 xas_for_each(&xas, bitmap, ULONG_MAX) { in ida_destroy()
550 xas_store(&xas, NULL); in ida_destroy()
552 xas_unlock_irqrestore(&xas, flags); in ida_destroy()