kho_scratch
struct kho_scratch *kho_scratch;
kho_scratch = (void *)(unsigned long)kho->scratch_addr;
nr_areas = kho->scratch_size / sizeof(*kho_scratch);
struct kho_scratch *area = &kho_scratch[i];
unsigned long base_pfn = PHYS_PFN(kho_scratch[i].addr);
unsigned long count = kho_scratch[i].size >> PAGE_SHIFT;
kmemleak_ignore_phys(kho_scratch[i].addr);
void *start = __va(kho_scratch[i].addr);
void *end = start + kho_scratch[i].size;
kho_scratch = phys_to_virt(kho_in.scratch_phys);
unsigned int scratch_cnt = scratch_len / sizeof(*kho_scratch);
struct kho_scratch *scratch = NULL;
struct kho_scratch *area = &scratch[i];
scratch_size = sizeof(*kho_scratch) * kho_scratch_cnt;
.buffer = kho_scratch,
.start = kho_scratch[i].addr,
.end = kho_scratch[i].addr + kho_scratch[i].size - 1,
struct kho_scratch *kho_scratch;
size = kho_scratch_cnt * sizeof(*kho_scratch);
kho_scratch = memblock_alloc(size, PAGE_SIZE);
if (!kho_scratch) {
kho_scratch[i].addr = addr;
kho_scratch[i].size = size;
kho_scratch[i].addr = addr;
kho_scratch[i].size = size;
kho_scratch[i].addr = addr;
kho_scratch[i].size = size;
memblock_phys_free(kho_scratch[i].addr, kho_scratch[i].size);
memblock_free(kho_scratch, kho_scratch_cnt * sizeof(*kho_scratch));
scratch_start = kho_scratch[i].addr;
scratch_end = kho_scratch[i].addr + kho_scratch[i].size;
seq_printf(m, "0x%llx\n", kho_scratch[i].size);
seq_printf(m, "0x%llx\n", kho_scratch[i].addr);
extern struct kho_scratch *kho_scratch;