Lines Matching refs:mb_id
210 static unsigned long virtio_mem_mb_id_to_phys(unsigned long mb_id) in virtio_mem_mb_id_to_phys() argument
212 return mb_id * memory_block_size_bytes(); in virtio_mem_mb_id_to_phys()
221 const unsigned long mb_id = virtio_mem_phys_to_mb_id(addr); in virtio_mem_phys_to_sb_id() local
222 const unsigned long mb_addr = virtio_mem_mb_id_to_phys(mb_id); in virtio_mem_phys_to_sb_id()
230 static void virtio_mem_mb_set_state(struct virtio_mem *vm, unsigned long mb_id, in virtio_mem_mb_set_state() argument
233 const unsigned long idx = mb_id - vm->first_mb_id; in virtio_mem_mb_set_state()
248 unsigned long mb_id) in virtio_mem_mb_get_state() argument
250 const unsigned long idx = mb_id - vm->first_mb_id; in virtio_mem_mb_get_state()
301 unsigned long mb_id, int sb_id, in virtio_mem_mb_set_sb_plugged() argument
304 const int bit = (mb_id - vm->first_mb_id) * vm->nb_sb_per_mb + sb_id; in virtio_mem_mb_set_sb_plugged()
315 unsigned long mb_id, int sb_id, in virtio_mem_mb_set_sb_unplugged() argument
318 const int bit = (mb_id - vm->first_mb_id) * vm->nb_sb_per_mb + sb_id; in virtio_mem_mb_set_sb_unplugged()
327 unsigned long mb_id, int sb_id, in virtio_mem_mb_test_sb_plugged() argument
330 const int bit = (mb_id - vm->first_mb_id) * vm->nb_sb_per_mb + sb_id; in virtio_mem_mb_test_sb_plugged()
344 unsigned long mb_id, int sb_id, in virtio_mem_mb_test_sb_unplugged() argument
347 const int bit = (mb_id - vm->first_mb_id) * vm->nb_sb_per_mb + sb_id; in virtio_mem_mb_test_sb_unplugged()
358 unsigned long mb_id) in virtio_mem_mb_first_unplugged_sb() argument
360 const int bit = (mb_id - vm->first_mb_id) * vm->nb_sb_per_mb; in virtio_mem_mb_first_unplugged_sb()
406 static int virtio_mem_mb_add(struct virtio_mem *vm, unsigned long mb_id) in virtio_mem_mb_add() argument
408 const uint64_t addr = virtio_mem_mb_id_to_phys(mb_id); in virtio_mem_mb_add()
425 dev_dbg(&vm->vdev->dev, "adding memory block: %lu\n", mb_id); in virtio_mem_mb_add()
440 static int virtio_mem_mb_remove(struct virtio_mem *vm, unsigned long mb_id) in virtio_mem_mb_remove() argument
442 const uint64_t addr = virtio_mem_mb_id_to_phys(mb_id); in virtio_mem_mb_remove()
448 dev_dbg(&vm->vdev->dev, "removing memory block: %lu\n", mb_id); in virtio_mem_mb_remove()
461 unsigned long mb_id) in virtio_mem_mb_offline_and_remove() argument
463 const uint64_t addr = virtio_mem_mb_id_to_phys(mb_id); in virtio_mem_mb_offline_and_remove()
470 mb_id); in virtio_mem_mb_offline_and_remove()
516 static bool virtio_mem_owned_mb(struct virtio_mem *vm, unsigned long mb_id) in virtio_mem_owned_mb() argument
518 return mb_id >= vm->first_mb_id && mb_id <= vm->last_mb_id; in virtio_mem_owned_mb()
522 unsigned long mb_id) in virtio_mem_notify_going_online() argument
524 switch (virtio_mem_mb_get_state(vm, mb_id)) { in virtio_mem_notify_going_online()
537 unsigned long mb_id) in virtio_mem_notify_offline() argument
539 switch (virtio_mem_mb_get_state(vm, mb_id)) { in virtio_mem_notify_offline()
541 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_notify_offline()
545 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_notify_offline()
563 static void virtio_mem_notify_online(struct virtio_mem *vm, unsigned long mb_id) in virtio_mem_notify_online() argument
567 switch (virtio_mem_mb_get_state(vm, mb_id)) { in virtio_mem_notify_online()
569 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_notify_online()
573 virtio_mem_mb_set_state(vm, mb_id, VIRTIO_MEM_MB_STATE_ONLINE); in virtio_mem_notify_online()
588 unsigned long mb_id) in virtio_mem_notify_going_offline() argument
596 if (virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id, 1)) in virtio_mem_notify_going_offline()
604 pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_notify_going_offline()
616 unsigned long mb_id) in virtio_mem_notify_cancel_offline() argument
623 if (virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id, 1)) in virtio_mem_notify_cancel_offline()
630 pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_notify_cancel_offline()
651 const unsigned long mb_id = virtio_mem_phys_to_mb_id(start); in virtio_mem_memory_notifier_cb() local
683 virtio_mem_notify_going_offline(vm, mb_id); in virtio_mem_memory_notifier_cb()
693 rc = virtio_mem_notify_going_online(vm, mb_id); in virtio_mem_memory_notifier_cb()
696 virtio_mem_notify_offline(vm, mb_id); in virtio_mem_memory_notifier_cb()
701 virtio_mem_notify_online(vm, mb_id); in virtio_mem_memory_notifier_cb()
708 virtio_mem_notify_cancel_offline(vm, mb_id); in virtio_mem_memory_notifier_cb()
800 const unsigned long mb_id = virtio_mem_phys_to_mb_id(addr); in virtio_mem_online_page_cb() local
812 if (!virtio_mem_owned_mb(vm, mb_id)) in virtio_mem_online_page_cb()
820 if (virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id, 1)) in virtio_mem_online_page_cb()
942 static int virtio_mem_mb_plug_sb(struct virtio_mem *vm, unsigned long mb_id, in virtio_mem_mb_plug_sb() argument
945 const uint64_t addr = virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_mb_plug_sb()
950 dev_dbg(&vm->vdev->dev, "plugging memory block: %lu : %i - %i\n", mb_id, in virtio_mem_mb_plug_sb()
955 virtio_mem_mb_set_sb_plugged(vm, mb_id, sb_id, count); in virtio_mem_mb_plug_sb()
963 static int virtio_mem_mb_unplug_sb(struct virtio_mem *vm, unsigned long mb_id, in virtio_mem_mb_unplug_sb() argument
966 const uint64_t addr = virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_mb_unplug_sb()
972 mb_id, sb_id, sb_id + count - 1); in virtio_mem_mb_unplug_sb()
976 virtio_mem_mb_set_sb_unplugged(vm, mb_id, sb_id, count); in virtio_mem_mb_unplug_sb()
990 unsigned long mb_id, uint64_t *nb_sb) in virtio_mem_mb_unplug_any_sb() argument
999 virtio_mem_mb_test_sb_unplugged(vm, mb_id, sb_id, 1)) in virtio_mem_mb_unplug_any_sb()
1006 virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id - 1, 1)) { in virtio_mem_mb_unplug_any_sb()
1011 rc = virtio_mem_mb_unplug_sb(vm, mb_id, sb_id, count); in virtio_mem_mb_unplug_any_sb()
1028 static int virtio_mem_mb_unplug(struct virtio_mem *vm, unsigned long mb_id) in virtio_mem_mb_unplug() argument
1032 return virtio_mem_mb_unplug_any_sb(vm, mb_id, &nb_sb); in virtio_mem_mb_unplug()
1039 unsigned long *mb_id) in virtio_mem_prepare_next_mb() argument
1057 *mb_id = vm->next_mb_id++; in virtio_mem_prepare_next_mb()
1080 unsigned long mb_id, in virtio_mem_mb_plug_and_add() argument
1093 rc = virtio_mem_mb_plug_sb(vm, mb_id, 0, count); in virtio_mem_mb_plug_and_add()
1102 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_plug_and_add()
1105 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_plug_and_add()
1109 rc = virtio_mem_mb_add(vm, mb_id); in virtio_mem_mb_plug_and_add()
1114 "adding memory block %lu failed with %d\n", mb_id, rc); in virtio_mem_mb_plug_and_add()
1115 rc2 = virtio_mem_mb_unplug_sb(vm, mb_id, 0, count); in virtio_mem_mb_plug_and_add()
1123 virtio_mem_mb_set_state(vm, mb_id, new_state); in virtio_mem_mb_plug_and_add()
1139 static int virtio_mem_mb_plug_any_sb(struct virtio_mem *vm, unsigned long mb_id, in virtio_mem_mb_plug_any_sb() argument
1150 sb_id = virtio_mem_mb_first_unplugged_sb(vm, mb_id); in virtio_mem_mb_plug_any_sb()
1156 !virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id + count, in virtio_mem_mb_plug_any_sb()
1160 rc = virtio_mem_mb_plug_sb(vm, mb_id, sb_id, count); in virtio_mem_mb_plug_any_sb()
1168 pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_mb_plug_any_sb()
1174 if (virtio_mem_mb_test_sb_plugged(vm, mb_id, 0, vm->nb_sb_per_mb)) { in virtio_mem_mb_plug_any_sb()
1176 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_plug_any_sb()
1179 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_plug_any_sb()
1192 unsigned long mb_id; in virtio_mem_plug_request() local
1202 virtio_mem_for_each_mb_state(vm, mb_id, in virtio_mem_plug_request()
1204 rc = virtio_mem_mb_plug_any_sb(vm, mb_id, &nb_sb, true); in virtio_mem_plug_request()
1211 virtio_mem_for_each_mb_state(vm, mb_id, in virtio_mem_plug_request()
1213 rc = virtio_mem_mb_plug_any_sb(vm, mb_id, &nb_sb, false); in virtio_mem_plug_request()
1226 virtio_mem_for_each_mb_state(vm, mb_id, VIRTIO_MEM_MB_STATE_UNUSED) { in virtio_mem_plug_request()
1230 rc = virtio_mem_mb_plug_and_add(vm, mb_id, &nb_sb); in virtio_mem_plug_request()
1241 rc = virtio_mem_prepare_next_mb(vm, &mb_id); in virtio_mem_plug_request()
1244 rc = virtio_mem_mb_plug_and_add(vm, mb_id, &nb_sb); in virtio_mem_plug_request()
1266 unsigned long mb_id, in virtio_mem_mb_unplug_any_sb_offline() argument
1271 rc = virtio_mem_mb_unplug_any_sb(vm, mb_id, nb_sb); in virtio_mem_mb_unplug_any_sb_offline()
1274 if (!virtio_mem_mb_test_sb_plugged(vm, mb_id, 0, vm->nb_sb_per_mb)) in virtio_mem_mb_unplug_any_sb_offline()
1275 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_unplug_any_sb_offline()
1280 if (virtio_mem_mb_test_sb_unplugged(vm, mb_id, 0, vm->nb_sb_per_mb)) { in virtio_mem_mb_unplug_any_sb_offline()
1287 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_unplug_any_sb_offline()
1291 rc = virtio_mem_mb_remove(vm, mb_id); in virtio_mem_mb_unplug_any_sb_offline()
1304 unsigned long mb_id, int sb_id, in virtio_mem_mb_unplug_sb_online() argument
1312 start_pfn = PFN_DOWN(virtio_mem_mb_id_to_phys(mb_id) + in virtio_mem_mb_unplug_sb_online()
1327 rc = virtio_mem_mb_unplug_sb(vm, mb_id, sb_id, count); in virtio_mem_mb_unplug_sb_online()
1334 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_unplug_sb_online()
1350 unsigned long mb_id, in virtio_mem_mb_unplug_any_sb_online() argument
1357 virtio_mem_mb_test_sb_plugged(vm, mb_id, 0, vm->nb_sb_per_mb)) { in virtio_mem_mb_unplug_any_sb_online()
1358 rc = virtio_mem_mb_unplug_sb_online(vm, mb_id, 0, in virtio_mem_mb_unplug_any_sb_online()
1371 !virtio_mem_mb_test_sb_plugged(vm, mb_id, sb_id, 1)) in virtio_mem_mb_unplug_any_sb_online()
1376 rc = virtio_mem_mb_unplug_sb_online(vm, mb_id, sb_id, 1); in virtio_mem_mb_unplug_any_sb_online()
1390 if (virtio_mem_mb_test_sb_unplugged(vm, mb_id, 0, vm->nb_sb_per_mb)) { in virtio_mem_mb_unplug_any_sb_online()
1392 rc = virtio_mem_mb_offline_and_remove(vm, mb_id); in virtio_mem_mb_unplug_any_sb_online()
1395 virtio_mem_mb_set_state(vm, mb_id, in virtio_mem_mb_unplug_any_sb_online()
1408 unsigned long mb_id; in virtio_mem_unplug_request() local
1422 virtio_mem_for_each_mb_state_rev(vm, mb_id, in virtio_mem_unplug_request()
1424 rc = virtio_mem_mb_unplug_any_sb_offline(vm, mb_id, in virtio_mem_unplug_request()
1432 virtio_mem_for_each_mb_state_rev(vm, mb_id, in virtio_mem_unplug_request()
1434 rc = virtio_mem_mb_unplug_any_sb_offline(vm, mb_id, in virtio_mem_unplug_request()
1447 virtio_mem_for_each_mb_state_rev(vm, mb_id, in virtio_mem_unplug_request()
1449 rc = virtio_mem_mb_unplug_any_sb_online(vm, mb_id, in virtio_mem_unplug_request()
1459 virtio_mem_for_each_mb_state_rev(vm, mb_id, in virtio_mem_unplug_request()
1461 rc = virtio_mem_mb_unplug_any_sb_online(vm, mb_id, in virtio_mem_unplug_request()
1483 unsigned long mb_id; in virtio_mem_unplug_pending_mb() local
1486 virtio_mem_for_each_mb_state(vm, mb_id, VIRTIO_MEM_MB_STATE_PLUGGED) { in virtio_mem_unplug_pending_mb()
1487 rc = virtio_mem_mb_unplug(vm, mb_id); in virtio_mem_unplug_pending_mb()
1490 virtio_mem_mb_set_state(vm, mb_id, VIRTIO_MEM_MB_STATE_UNUSED); in virtio_mem_unplug_pending_mb()
1836 unsigned long mb_id; in virtio_mem_remove() local
1857 virtio_mem_for_each_mb_state(vm, mb_id, in virtio_mem_remove()
1859 rc = virtio_mem_mb_remove(vm, mb_id); in virtio_mem_remove()
1861 virtio_mem_mb_set_state(vm, mb_id, VIRTIO_MEM_MB_STATE_UNUSED); in virtio_mem_remove()