runlist
retval = pm->pmf->runlist(pm, &rl_buffer[rl_wptr],
retval = pm->pmf->runlist(pm, rl_buffer, rl_gpu_ib_addr,
.runlist = pm_runlist_v9,
.runlist = pm_runlist_v9,
.runlist = pm_runlist_vi,
int (*runlist)(struct packet_manager *pm, uint32_t *buffer,
} *runlist;
__u8 runlist;
__u8 runlist;
int runlist;
args->runlist = __ffs64(runm);
chan->runlist = args->runlist;
int runlist;
fctx->context = drm->runl[chan->runlist].context_base + chan->chid;
ret = nvif_event_ctor(&chan->user, "fenceNonStallIntr", (chan->runlist << 16) | chan->chid,
return chan->cli->drm->runl[chan->runlist].chan_id_base + chan->chid;
kfree(device->runlist);
device->runlist = NULL;
device->runlist = NULL;
struct nv_device_info_v1_data runlist[64];
if (device->runlist)
for (i = 0; i < ARRAY_SIZE(a->v.runlist); i++) {
a->v.runlist[i].mthd = NV_DEVICE_HOST_RUNLIST_ENGINES;
a->v.runlist[i].data = i;
device->runlist = kzalloc_objs(*device->runlist, device->runlists);
if (!device->runlist) {
if (a->v.runlist[i].mthd != NV_DEVICE_INFO_INVALID)
device->runlist[i].engines = a->v.runlist[i].data;
if (device->runlist[i].engines & engine)
nvkm_list_foreach(tdev, &device->top->device, head, tdev->runlist == runl->addr) {
nvkm_list_foreach(tdev, &device->top->device, head, tdev->runlist >= 0) {
runl = nvkm_runl_get(fifo, -1, tdev->runlist);
ret = ga100_runl_new(fifo, id++, tdev->runlist, &runl);
nvkm_list_foreach(tdev, &device->top->device, head, tdev->runlist >= 0) {
runl = nvkm_runl_get(fifo, tdev->runlist, tdev->runlist);
runl = nvkm_runl_new(fifo, tdev->runlist, tdev->runlist, 0);
runl = nvkm_runl_get(fifo, args->v0.runlist, 0);
runl = nvkm_runl_get(fifo, args->v0.runlist, 0);
info->runlist = -1;
info->runlist = (data & 0x00fffc00);
info->addr, info->fault, info->runlist < 0 ? 0 : info->runlist,
info->addr, info->fault, info->engine, info->runlist,
info->runlist = (data & 0x01e00000) >> 21;
down_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
rl = ntfs_mapping_pairs_decompress(ni->vol, a, &ni->runlist, &new_rl_count);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
down_write(&ni->runlist.lock);
ni->runlist.rl = rl;
for (ni->runlist.count = 1; rl->length != 0; rl++)
ni->runlist.count++;
ni->runlist.count = 0;
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
ni->runlist.rl = NULL;
ni->runlist.rl = NULL;
down_write(&ni->runlist.lock);
if (likely(ntfs_rl_vcn_to_lcn(ni->runlist.rl, vcn) <=
up_write(&ni->runlist.lock);
struct runlist_element *rl = ni->runlist.rl;
if (NInoNonResident(ni) && ni->runlist.rl)
kvfree(ni->runlist.rl);
if (NInoFullyMapped(ni) && ni->runlist.rl)
rl = ni->runlist.rl;
if (ntfs_rl_vcn_to_lcn(ni->runlist.rl, next_vcn) == LCN_RL_NOT_MAPPED)
rl = ntfs_mapping_pairs_decompress(ni->vol, a, &ni->runlist,
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
rl = ni->runlist.rl;
sparse = ntfs_rl_sparse(ni->runlist.rl);
new_compr_size = ntfs_rl_get_compressed_size(ni->vol, ni->runlist.rl);
if (!ni || !ni->runlist.rl)
start_rl = ni->runlist.rl;
first_lcn = ntfs_rl_vcn_to_lcn(ni->runlist.rl, stop_vcn);
if (!ni->runlist.rl) {
lcn = ntfs_rl_vcn_to_lcn(ni->runlist.rl, vcn);
up_read(&ni->runlist.lock);
down_write(&ni->runlist.lock);
if (unlikely(ntfs_rl_vcn_to_lcn(ni->runlist.rl, vcn) !=
up_write(&ni->runlist.lock);
down_read(&ni->runlist.lock);
kvfree(ni->runlist.rl);
ni->runlist.rl = NULL;
ni->runlist.count = 0;
up_write(&ni->runlist.lock);
down_read(&ni->runlist.lock);
if (ntfs_rl_truncate_nolock(vol, &ni->runlist, first_free_vcn)) {
kvfree(ni->runlist.rl);
ni->runlist.rl = NULL;
struct runlist_element *__ntfs_attr_find_vcn_nolock(struct runlist *runlist, const s64 vcn)
while (ni->runlist.rl[last].length)
rl = ntfs_rl_realloc(ni->runlist.rl, last + 1,
ni->runlist.rl = rl;
ni->runlist.count += more_entries;
int rh = runlist->rl_hint;
if (ni->runlist.rl->length) {
if (runlist->count <= 1)
for (rl = ni->runlist.rl; (rl + 1)->length; rl++)
while (rl->lcn < 0 && rl != ni->runlist.rl)
if (runlist->count - 1 > rh && runlist->rl[rh].vcn <= vcn) {
rln = ntfs_runlists_merge(&ni->runlist, rl, 0, &new_rl_count);
ni->runlist.rl = rln;
if (vcn < runlist->rl[rh].vcn + runlist->rl[rh].length)
ni->runlist.count = new_rl_count;
return &runlist->rl[rh];
if (runlist->count - 2 == rh)
down_write(&ni->runlist.lock);
err2 = ntfs_rl_truncate_nolock(vol, &ni->runlist,
up_write(&ni->runlist.lock);
kvfree(ni->runlist.rl);
ni->runlist.rl = NULL;
down_read(&ni->runlist.lock);
run = &runlist->rl[0];
up_read(&ni->runlist.lock);
runlist->rl_hint = 0;
run = &runlist->rl[runlist->count - 2];
runlist->rl_hint = runlist->count - 2;
upper_idx = runlist->count - 2;
run = &runlist->rl[idx];
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
runlist->rl_hint = idx;
rl = ntfs_runlists_merge(&ni->runlist, rlc, 0, &new_rl_count);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
rl = ntfs_rl_find_vcn_nolock(ni->runlist.rl, start_vcn);
up_write(&ni->runlist.lock);
rl = ntfs_rl_insert_range(ni->runlist.rl, (int)ni->runlist.count,
up_write(&ni->runlist.lock);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
up_write(&ni->runlist.lock);
if (!ni->runlist.rl) {
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
for (rl = ni->runlist.rl, dst_cnt = 0; rl && rl->length; rl++)
rl = ntfs_rl_find_vcn_nolock(ni->runlist.rl, start_vcn);
up_write(&ni->runlist.lock);
rl = ntfs_rl_collapse_range(ni->runlist.rl, dst_cnt + 1,
up_write(&ni->runlist.lock);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_cnt;
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
rl = ni->runlist.rl;
rl = __ntfs_attr_find_vcn_nolock(&ni->runlist, vcn);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
for (rl = ni->runlist.rl, dst_cnt = 0; rl && rl->length; rl++)
rl = ntfs_rl_find_vcn_nolock(ni->runlist.rl, start_vcn);
up_write(&ni->runlist.lock);
rl = ntfs_rl_punch_hole(ni->runlist.rl, dst_cnt + 1,
up_write(&ni->runlist.lock);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
up_write(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
struct runlist_element *__ntfs_attr_find_vcn_nolock(struct runlist *runlist,
down_write(&ni->runlist.lock);
rl = ntfs_runlists_merge(&ni->runlist, rlc, 0, &new_rl_count);
up_write(&ni->runlist.lock);
ni->runlist.count = new_rl_count;
ni->runlist.rl = rl;
up_write(&ni->runlist.lock);
down_read(&ni->runlist.lock);
rl = ni->runlist.rl;
up_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
mp_size = ntfs_get_size_for_mapping_pairs(ni->vol, ni->runlist.rl, 0, -1, -1);
err = ntfs_rl_truncate_nolock(vol, &ni->runlist, vcn_tr);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
kvfree(ni->runlist.rl);
ni->runlist.rl = NULL;
up_write(&ni->runlist.lock);
down_write(&ni->runlist.lock);
rc = ni->runlist.count - 2;
rl = ni->runlist.rl;
nrl = ntfs_mapping_pairs_decompress(vol, a, &ni->runlist,
ni->runlist.rl = nrl;
ni->runlist.count = new_rl_count;
lockdep_set_class(&ni->runlist.lock, &mft_ni_runlist_lock_key);
if (NInoNonResident(ni) && ni->runlist.rl) {
kvfree(ni->runlist.rl);
ni->runlist.rl = NULL;
rl = mft_ni->runlist.rl;
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_read(&mft_ni->runlist.lock);
up_read(&mft_ni->runlist.lock);
down_read(&mft_ni->runlist.lock);
up_read(&mft_ni->runlist.lock);
up_read(&mft_ni->runlist.lock);
err = ntfs_cluster_free_from_rl(ni->vol, ni->runlist.rl);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
ntfs_init_runlist(&ni->runlist);
lockdep_set_class(&ni->runlist.lock,
struct runlist runlist;
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_read(&ni->runlist.lock);
rl = __ntfs_attr_find_vcn_nolock(&ni->runlist, vcn);
up_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
down_read(&ni->runlist.lock);
rl = ni->runlist.rl;
up_read(&ni->runlist.lock);
down_read(&ni->runlist.lock);
rl = ni->runlist.rl;
up_read(&ni->runlist.lock);
down_write(&ni->runlist.lock);
rl = __ntfs_attr_find_vcn_nolock(&ni->runlist, vcn);
up_write(&ni->runlist.lock);
rl = ni->runlist.rl;
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
rl = ntfs_runlists_merge(&ni->runlist, rlc, 0,
up_write(&ni->runlist.lock);
ni->runlist.rl = rl;
ni->runlist.count = new_rl_count;
up_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
down_write(&log_ni->runlist.lock);
rl = log_ni->runlist.rl;
rl = log_ni->runlist.rl;
up_write(&log_ni->runlist.lock);
up_write(&log_ni->runlist.lock);
down_write(&mftbmp_ni->runlist.lock);
up_write(&mftbmp_ni->runlist.lock);
up_write(&mftbmp_ni->runlist.lock);
up_write(&mftbmp_ni->runlist.lock);
rl = ntfs_runlists_merge(&mftbmp_ni->runlist, rl2, 0, &new_rl_count);
up_write(&mftbmp_ni->runlist.lock);
mftbmp_ni->runlist.rl = rl;
mftbmp_ni->runlist.count = new_rl_count;
for (rl2 = rl; rl2 > mftbmp_ni->runlist.rl; rl2--) {
up_write(&mftbmp_ni->runlist.lock);
up_write(&mftbmp_ni->runlist.lock);
mftbmp_ni->runlist.count--;
up_write(&mftbmp_ni->runlist.lock);
down_write(&mft_ni->runlist.lock);
up_write(&mft_ni->runlist.lock);
up_write(&mft_ni->runlist.lock);
up_write(&mft_ni->runlist.lock);
down_write(&mft_ni->runlist.lock);
rl = ntfs_runlists_merge(&mft_ni->runlist, rl2, 0, &new_rl_count);
up_write(&mft_ni->runlist.lock);
mft_ni->runlist.rl = rl;
mft_ni->runlist.count = new_rl_count;
up_write(&mft_ni->runlist.lock);
down_write(&mft_ni->runlist.lock);
down_write(&mft_ni->runlist.lock);
for (rl2 = rl; rl2 > mft_ni->runlist.rl; rl2--) {
up_write(&mft_ni->runlist.lock);
up_write(&mft_ni->runlist.lock);
up_write(&mft_ni->runlist.lock);
if (ntfs_rl_truncate_nolock(vol, &mft_ni->runlist, old_last_vcn)) {
down_read(&NTFS_I(vol->mft_ino)->runlist.lock);
up_read(&NTFS_I(vol->mft_ino)->runlist.lock);
down_read(&ni->runlist.lock);
up_read(&ni->runlist.lock);
down_write(&ni->runlist.lock);
up_write(&ni->runlist.lock);
int ntfs_rl_truncate_nolock(const struct ntfs_volume *vol, struct runlist *const runlist,
if (!runlist || new_length < 0)
rl = runlist->rl;
old_size = trl - runlist->rl + 1;
runlist->count = rl - runlist->rl + 1;
int new_size = rl - runlist->rl + 1;
rl = ntfs_rl_realloc(runlist->rl, old_size, new_size);
runlist->rl = rl;
if ((rl > runlist->rl) && ((rl - 1)->lcn == LCN_HOLE))
old_size = rl - runlist->rl + 1;
rl = ntfs_rl_realloc(runlist->rl, old_size,
runlist->rl = rl;
runlist->count = old_size + 1;
struct runlist_element *ntfs_runlists_merge(struct runlist *d_runlist,
const struct attr_record *attr, struct runlist *old_runlist,
static inline void ntfs_init_runlist(struct runlist *rl)
struct runlist_element *ntfs_runlists_merge(struct runlist *d_runlist,
const struct attr_record *attr, struct runlist *old_runlist,
struct runlist *const runlist, const s64 new_length);
down_read(&mirr_ni->runlist.lock);
rl = mirr_ni->runlist.rl;
up_read(&mirr_ni->runlist.lock);
up_read(&mirr_ni->runlist.lock);
lockdep_set_class(&NTFS_I(vol->mftbmp_ino)->runlist.lock,
lockdep_set_class(&NTFS_I(vol->lcnbmp_ino)->runlist.lock,
lockdep_set_class(&NTFS_I(tmp_ino)->runlist.lock,