Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions tools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ endif

ifeq ($(ARCH), loongarch)
toolchain := $(CCARCH)-unknown-linux-$(LIBC)
else ifeq ($(ARCH), arm64)
toolchain := $(CCARCH)-none-linux-$(LIBC)
else
toolchain := $(CCARCH)-linux-$(LIBC)
endif
Expand All @@ -49,7 +51,7 @@ include $(sources:.c=.d)

ifeq ($(DEBUG), y)
CFLAGS += -g -O0
else
else
CFLAGS += -O2
endif

Expand All @@ -59,7 +61,7 @@ OBJDUMP := $(toolchain)-objdump

ifeq ($(ARCH), arm64)
ifeq ($(VIRTIO_GPU), y)
include_dirs += -I/usr/$(toolchain)/include -I/usr/$(toolchain)/include/libdrm -L/usr/$(toolchain)/lib -ldrm
include_dirs += -I/usr/$(toolchain)/include -I/usr/$(toolchain)/include/libdrm -L/usr/$(toolchain)/lib -ldrm
endif
else ifeq ($(ARCH), riscv)
CFLAGS += -static
Expand Down Expand Up @@ -93,4 +95,4 @@ rpmsg_demo: $(rpmsg_demo_object)
$(CC) -o $@ $^ $(CFLAGS) $(include_dirs) $(LDFLAGS) $(LIBS)

clean:
@rm -f hvisor ivc_demo rpmsg_demo *.o *.d *.d.* virtio_gpu/*.o virtio_gpu/*.d virtio_gpu/*.d.* ../cJSON/*.o ../cJSON/*.d ../cJSON/*.d.*
@rm -f hvisor ivc_demo rpmsg_demo *.o *.d *.d.* virtio_gpu/*.o virtio_gpu/*.d virtio_gpu/*.d.* ../cJSON/*.o ../cJSON/*.d ../cJSON/*.d.*
3 changes: 2 additions & 1 deletion tools/hvisor.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "safe_cjson.h"
#include "virtio.h"
#include "zone_config.h"

static void __attribute__((noreturn)) help(int exit_status) {
printf("Hypervisor Management Tool\n\n");
printf("Usage:\n");
Expand Down Expand Up @@ -111,7 +112,7 @@ static __u64 load_image_to_memory(const char *path, __u64 load_paddr) {
exit(1);
}
// Load image content into memory
image_content = read_file(path, &size);
image_content = read_file(path, (uint64_t *)&size);

page_size = sysconf(_SC_PAGESIZE);
map_size = (size + page_size - 1) & ~(page_size - 1);
Expand Down
37 changes: 20 additions & 17 deletions tools/virtio.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ int get_zone_ram_index(void *zonex_ipa, int zone_id) {
if (zone_mem[zone_id][i][MEM_SIZE] == 0)
continue;
;
if (zonex_ipa >= zone_mem[zone_id][i][ZONEX_IPA] &&
zonex_ipa < zone_mem[zone_id][i][ZONEX_IPA] +
zone_mem[zone_id][i][MEM_SIZE]) {
if ((uintptr_t)zonex_ipa >= zone_mem[zone_id][i][ZONEX_IPA] &&
(uintptr_t)zonex_ipa < zone_mem[zone_id][i][ZONEX_IPA] +
zone_mem[zone_id][i][MEM_SIZE]) {
return i;
}
}
Expand Down Expand Up @@ -396,21 +396,24 @@ void virtqueue_set_desc_table(VirtQueue *vq) {
int zone_id = vq->dev->zone_id;
log_debug("zone %d set dev %s desc table ipa at %#x", zone_id,
virtio_device_type_to_string(vq->dev->type), vq->desc_table_addr);
vq->desc_table = (VirtqDesc *)get_virt_addr(vq->desc_table_addr, zone_id);
vq->desc_table = (VirtqDesc *)get_virt_addr(
(void *)(uintptr_t)vq->desc_table_addr, zone_id);
}

void virtqueue_set_avail(VirtQueue *vq) {
int zone_id = vq->dev->zone_id;
log_debug("zone %d set dev %s avail ring ipa at %#x", zone_id,
virtio_device_type_to_string(vq->dev->type), vq->avail_addr);
vq->avail_ring = (VirtqAvail *)get_virt_addr(vq->avail_addr, zone_id);
vq->avail_ring =
(VirtqAvail *)get_virt_addr((void *)(uintptr_t)vq->avail_addr, zone_id);
}

void virtqueue_set_used(VirtQueue *vq) {
int zone_id = vq->dev->zone_id;
log_debug("zone %d set dev %s used ring ipa at %#x", zone_id,
virtio_device_type_to_string(vq->dev->type), vq->used_addr);
vq->used_ring = (VirtqUsed *)get_virt_addr(vq->used_addr, zone_id);
vq->used_ring =
(VirtqUsed *)get_virt_addr((void *)(uintptr_t)vq->used_addr, zone_id);
}

// record one descriptor to iov.
Expand Down Expand Up @@ -1242,14 +1245,14 @@ int virtio_start_from_json(char *json_path) {
for (int j = 0; j < num_mems; j++) {
cJSON *mem_region =
SAFE_CJSON_GET_ARRAY_ITEM(memory_region_json, j);
zone0_ipa =
strtoull(SAFE_CJSON_GET_OBJECT_ITEM(mem_region, "zone0_ipa")
->valuestring,
NULL, 16);
zonex_ipa =
strtoull(SAFE_CJSON_GET_OBJECT_ITEM(mem_region, "zonex_ipa")
->valuestring,
NULL, 16);
zone0_ipa = (void *)(uintptr_t)strtoull(
SAFE_CJSON_GET_OBJECT_ITEM(mem_region, "zone0_ipa")
->valuestring,
NULL, 16);
zonex_ipa = (void *)(uintptr_t)strtoull(
SAFE_CJSON_GET_OBJECT_ITEM(mem_region, "zonex_ipa")
->valuestring,
NULL, 16);
mem_size = strtoull(
SAFE_CJSON_GET_OBJECT_ITEM(mem_region, "size")->valuestring,
NULL, 16);
Expand All @@ -1275,9 +1278,9 @@ int virtio_start_from_json(char *json_path) {
err = -1;
goto err_out;
}
zone_mem[zone_id][j][VIRT_ADDR] = virt_addr;
zone_mem[zone_id][j][ZONE0_IPA] = zone0_ipa;
zone_mem[zone_id][j][ZONEX_IPA] = zonex_ipa;
zone_mem[zone_id][j][VIRT_ADDR] = (uintptr_t)virt_addr;
zone_mem[zone_id][j][ZONE0_IPA] = (uintptr_t)zone0_ipa;
zone_mem[zone_id][j][ZONEX_IPA] = (uintptr_t)zonex_ipa;
zone_mem[zone_id][j][MEM_SIZE] = mem_size;
}

Expand Down