Lines Matching refs:table
101 basl_dump_table(const struct basl_table *const table, const bool mem) in basl_dump_table() argument
103 const ACPI_TABLE_HEADER *const header = table->data; in basl_dump_table()
107 data = table->data; in basl_dump_table()
109 data = vm_map_gpa(table->ctx, BHYVE_ACPI_BASE + table->off, in basl_dump_table()
110 table->len); in basl_dump_table()
118 BHYVE_ACPI_BASE + table->off, mem ? "Memory" : "FwCfg"); in basl_dump_table()
119 hexdump(data, table->len, NULL, 0); in basl_dump_table()
122 BHYVE_ACPI_BASE + table->off, mem ? "Memory" : "FwCfg"); in basl_dump_table()
125 hexdump_set_addr(&h, BHYVE_ACPI_BASE + table->off); in basl_dump_table()
126 (void) hexdump_fileh(&h, data, table->len, HDF_DEFAULT, stdout); in basl_dump_table()
137 struct basl_table *table; in basl_dump() local
139 STAILQ_FOREACH(table, &basl_tables, chain) { in basl_dump()
140 BASL_EXEC(basl_dump_table(table, mem)); in basl_dump()
161 basl_finish_install_guest_tables(struct basl_table *const table, uint32_t *const off) in basl_finish_install_guest_tables() argument
165 table->off = roundup2(*off, table->alignment); in basl_finish_install_guest_tables()
166 *off = table->off + table->len; in basl_finish_install_guest_tables()
167 if (*off <= table->off) { in basl_finish_install_guest_tables()
169 table->len, table->off); in basl_finish_install_guest_tables()
176 qemu_fwcfg_add_file(table->fwcfg_name, table->len, table->data)); in basl_finish_install_guest_tables()
179 qemu_fwcfg_add_file((const char *)table->fwcfg_name, in basl_finish_install_guest_tables()
180 table->len, table->data)); in basl_finish_install_guest_tables()
182 BASL_EXEC(qemu_loader_alloc(basl_loader, table->fwcfg_name, in basl_finish_install_guest_tables()
183 table->alignment, QEMU_LOADER_ALLOC_HIGH)); in basl_finish_install_guest_tables()
195 gva = vm_map_gpa(table->ctx, BHYVE_ACPI_BASE + table->off, table->len); in basl_finish_install_guest_tables()
198 (uint64_t)BHYVE_ACPI_BASE + table->off, in basl_finish_install_guest_tables()
199 (uint64_t)BHYVE_ACPI_BASE + table->off + table->len); in basl_finish_install_guest_tables()
202 memcpy(gva, table->data, table->len); in basl_finish_install_guest_tables()
208 basl_finish_patch_checksums(struct basl_table *const table) in basl_finish_patch_checksums() argument
212 STAILQ_FOREACH(checksum, &table->checksums, chain) { in basl_finish_patch_checksums()
220 len = table->len; in basl_finish_patch_checksums()
223 assert(checksum->off < table->len); in basl_finish_patch_checksums()
224 assert(checksum->start < table->len); in basl_finish_patch_checksums()
225 assert(checksum->start + len <= table->len); in basl_finish_patch_checksums()
229 table->fwcfg_name, checksum->off, checksum->start, len)); in basl_finish_patch_checksums()
241 gpa = BHYVE_ACPI_BASE + table->off + checksum->start; in basl_finish_patch_checksums()
243 (gpa < BHYVE_ACPI_BASE + table->off)) { in basl_finish_patch_checksums()
245 __func__, table->off, checksum->start); in basl_finish_patch_checksums()
249 gva = vm_map_gpa(table->ctx, gpa, len); in basl_finish_patch_checksums()
276 struct basl_table *table; local
278 STAILQ_FOREACH(table, &basl_tables, chain) {
280 (const ACPI_TABLE_HEADER *)table->data;
285 return (table);
289 return (table);
299 basl_finish_patch_pointers(struct basl_table *const table) argument
303 STAILQ_FOREACH(pointer, &table->pointers, chain) {
308 assert(pointer->off < table->len);
309 assert(pointer->off + pointer->size <= table->len);
320 qemu_loader_add_pointer(basl_loader, table->fwcfg_name,
333 gpa = BHYVE_ACPI_BASE + table->off;
336 __func__, table->off);
340 gva = vm_map_gpa(table->ctx, gpa, table->len);
343 __func__, gpa, gpa + table->len);
356 basl_finish_set_length(struct basl_table *const table) argument
360 STAILQ_FOREACH(length, &table->lengths, chain) {
361 assert(length->off < table->len);
362 assert(length->off + length->size <= table->len);
364 basl_le_enc((uint8_t *)table->data + length->off, table->len,
374 struct basl_table *table; local
401 STAILQ_FOREACH(table, &basl_tables, chain) {
402 BASL_EXEC(basl_finish_set_length(table));
403 BASL_EXEC(basl_finish_install_guest_tables(table, &off));
405 STAILQ_FOREACH(table, &basl_tables, chain) {
406 BASL_EXEC(basl_finish_patch_pointers(table));
411 BASL_EXEC(basl_finish_patch_checksums(table));
467 basl_table_add_checksum(struct basl_table *const table, const uint32_t off, argument
472 assert(table != NULL);
484 STAILQ_INSERT_TAIL(&table->checksums, checksum, chain);
490 basl_table_add_length(struct basl_table *const table, const uint32_t off, argument
495 assert(table != NULL);
507 STAILQ_INSERT_TAIL(&table->lengths, length, chain);
513 basl_table_add_pointer(struct basl_table *const table, argument
519 assert(table != NULL);
533 STAILQ_INSERT_TAIL(&table->pointers, pointer, chain);
539 basl_table_append_bytes(struct basl_table *const table, const void *const bytes, argument
544 assert(table != NULL);
547 if (table->len + len <= table->len) {
549 __func__, table->len, len);
553 table->data = reallocf(table->data, table->len + len);
554 if (table->data == NULL) {
556 table->len + len);
557 table->len = 0;
561 end = (uint8_t *)table->data + table->len;
562 table->len += len;
570 basl_table_append_checksum(struct basl_table *const table, const uint32_t start, argument
573 assert(table != NULL);
575 BASL_EXEC(basl_table_add_checksum(table, table->len, start, len));
576 BASL_EXEC(basl_table_append_int(table, 0, 1));
582 basl_table_append_content(struct basl_table *table, void *data, uint32_t len) argument
587 return (basl_table_append_bytes(table,
593 basl_table_append_fwcfg(struct basl_table *const table, argument
596 assert(table != NULL);
602 BASL_EXEC(qemu_loader_add_pointer(basl_loader, table->fwcfg_name,
603 fwcfg_name, table->len, size));
604 BASL_EXEC(basl_table_append_int(table, 0, size));
610 basl_table_append_gas(struct basl_table *const table, const uint8_t space_id, argument
622 return (basl_table_append_bytes(table, &gas_le, sizeof(gas_le)));
626 basl_table_append_header(struct basl_table *const table, argument
634 assert(table != NULL);
635 assert(table->len == 0);
650 basl_table_append_bytes(table, &header_le, sizeof(header_le)));
652 BASL_EXEC(basl_table_add_length(table,
654 BASL_EXEC(basl_table_add_checksum(table,
662 basl_table_append_int(struct basl_table *const table, const uint64_t val, argument
670 return (basl_table_append_bytes(table, buf, size));
674 basl_table_append_length(struct basl_table *const table, const uint8_t size) argument
676 assert(table != NULL);
677 assert(size <= sizeof(table->len));
679 BASL_EXEC(basl_table_add_length(table, table->len, size));
680 BASL_EXEC(basl_table_append_int(table, 0, size));
686 basl_table_append_pointer(struct basl_table *const table, argument
689 assert(table != NULL);
692 BASL_EXEC(basl_table_add_pointer(table, src_signature, table->len, size));
693 BASL_EXEC(basl_table_append_int(table, 0, size));
699 basl_table_create(struct basl_table **const table, struct vmctx *ctx, argument
704 assert(table != NULL);
730 *table = new_table;
736 basl_table_register_to_rsdt(struct basl_table *table) argument
740 assert(table != NULL);
742 header = (const ACPI_TABLE_HEADER *)table->data;