table_desc
struct acpi_table_desc *table_desc;
acpi_tb_get_table(struct acpi_table_desc *table_desc,
void acpi_tb_put_table(struct acpi_table_desc *table_desc);
struct acpi_table_desc **table_desc);
acpi_tb_init_table_descriptor(struct acpi_table_desc *table_desc,
acpi_tb_acquire_temp_table(struct acpi_table_desc *table_desc,
void acpi_tb_release_temp_table(struct acpi_table_desc *table_desc);
acpi_status acpi_tb_validate_temp_table(struct acpi_table_desc *table_desc);
acpi_tb_verify_temp_table(struct acpi_table_desc *table_desc,
acpi_status acpi_tb_validate_table(struct acpi_table_desc *table_desc);
void acpi_tb_invalidate_table(struct acpi_table_desc *table_desc);
acpi_tb_acquire_table(struct acpi_table_desc *table_desc,
void acpi_tb_uninstall_table(struct acpi_table_desc *table_desc);
struct acpi_table_desc *table_desc;
table_desc = &acpi_gbl_root_table_list.tables[i];
acpi_os_printf("%3u %.2u ", i, table_desc->owner_id);
if (!(table_desc->flags & ACPI_TABLE_IS_LOADED)) {
switch (table_desc->flags & ACPI_TABLE_ORIGIN_MASK) {
status = acpi_tb_validate_table(table_desc);
if (table_desc->pointer) {
acpi_tb_print_table_header(table_desc->address,
table_desc->pointer);
table_desc->signature.ascii));
union acpi_operand_object *table_desc = ddb_handle;
table_index = table_desc->reference.value;
switch (table_desc->flags & ACPI_TABLE_ORIGIN_MASK) {
table_desc->pointer = table;
acpi_tb_acquire_table(struct acpi_table_desc *table_desc,
switch (table_desc->flags & ACPI_TABLE_ORIGIN_MASK) {
acpi_os_map_memory(table_desc->address, table_desc->length);
table = table_desc->pointer;
*table_length = table_desc->length;
*table_flags = table_desc->flags;
acpi_tb_check_duplication(struct acpi_table_desc *table_desc, u32 *table_index);
acpi_tb_acquire_temp_table(struct acpi_table_desc *table_desc,
acpi_tb_compare_tables(struct acpi_table_desc *table_desc, u32 table_index);
acpi_tb_init_table_descriptor(table_desc, address, flags, table);
void acpi_tb_release_temp_table(struct acpi_table_desc *table_desc)
acpi_tb_invalidate_table(table_desc);
acpi_status acpi_tb_validate_table(struct acpi_table_desc *table_desc)
if (!table_desc->pointer) {
status = acpi_tb_acquire_table(table_desc, &table_desc->pointer,
&table_desc->length,
&table_desc->flags);
if (!table_desc->pointer) {
void acpi_tb_invalidate_table(struct acpi_table_desc *table_desc)
if (!table_desc->pointer) {
acpi_tb_release_table(table_desc->pointer, table_desc->length,
table_desc->flags);
switch (table_desc->flags & ACPI_TABLE_ORIGIN_MASK) {
table_desc->pointer = NULL;
acpi_status acpi_tb_validate_temp_table(struct acpi_table_desc *table_desc)
if (!table_desc->pointer && !acpi_gbl_enable_table_validation) {
table_desc->length = sizeof(struct acpi_table_header);
return (acpi_tb_validate_table(table_desc));
acpi_tb_compare_tables(struct acpi_table_desc *table_desc, u32 table_index)
acpi_tb_check_duplication(struct acpi_table_desc *table_desc, u32 *table_index)
if (!acpi_tb_compare_tables(table_desc, i)) {
acpi_tb_verify_temp_table(struct acpi_table_desc *table_desc,
status = acpi_tb_validate_temp_table(table_desc);
!ACPI_COMPARE_NAMESEG(&table_desc->signature, signature)) {
table_desc->signature.integer, signature));
acpi_ut_verify_checksum(table_desc->pointer,
table_desc->length);
acpi_ut_valid_nameseg(table_desc->
table_desc->signature.ascii : "????",
ACPI_FORMAT_UINT64(table_desc->
acpi_tb_check_duplication(table_desc, table_index);
(table_desc->signature.
ascii) ? table_desc->
(table_desc->address)));
table_desc->flags |= ACPI_TABLE_IS_VERIFIED;
acpi_tb_invalidate_table(table_desc);
is_identical = (u8)((table_desc->length != table_length ||
memcmp(table_desc->pointer, table, table_length)) ?
struct acpi_table_desc **table_desc)
if (table_desc) {
*table_desc = &acpi_gbl_root_table_list.tables[i];
acpi_tb_init_table_descriptor(struct acpi_table_desc *table_desc,
memset(table_desc, 0, sizeof(struct acpi_table_desc));
table_desc->address = address;
table_desc->length = table->length;
table_desc->flags = flags;
ACPI_MOVE_32_TO_32(table_desc->signature.ascii, table->signature);
void acpi_tb_uninstall_table(struct acpi_table_desc *table_desc)
if (!table_desc->address) {
acpi_tb_invalidate_table(table_desc);
if ((table_desc->flags & ACPI_TABLE_ORIGIN_MASK) ==
ACPI_FREE(table_desc->pointer);
table_desc->pointer = NULL;
table_desc->address = ACPI_PTR_TO_PHYSADDR(NULL);
struct acpi_table_desc *table_desc;
table_desc = &acpi_gbl_root_table_list.tables[table_index];
new_table = ACPI_ALLOCATE(table_desc->length);
table_desc->length));
memcpy(new_table, table_desc->pointer, table_desc->length);
acpi_tb_uninstall_table(table_desc);
acpi_tb_get_table(struct acpi_table_desc *table_desc,
if (table_desc->validation_count == 0) {
status = acpi_tb_validate_table(table_desc);
if (table_desc->validation_count < ACPI_MAX_TABLE_VALIDATIONS) {
table_desc->validation_count++;
if (table_desc->validation_count >= ACPI_MAX_TABLE_VALIDATIONS) {
table_desc));
*out_table = table_desc->pointer;
void acpi_tb_put_table(struct acpi_table_desc *table_desc)
if (table_desc->validation_count < ACPI_MAX_TABLE_VALIDATIONS) {
table_desc->validation_count--;
if (table_desc->validation_count >= ACPI_MAX_TABLE_VALIDATIONS) {
table_desc));
if (table_desc->validation_count == 0) {
acpi_tb_invalidate_table(table_desc);
struct acpi_table_desc *table_desc;
table_desc = &acpi_gbl_root_table_list.tables[i];
if (table_desc->pointer) {
table_desc->signature.ascii));
table_desc = &acpi_gbl_root_table_list.tables[i];
if (!(table_desc->flags & ACPI_TABLE_IS_VERIFIED)) {
acpi_tb_verify_temp_table(table_desc, NULL,
acpi_tb_uninstall_table(table_desc);
struct acpi_table_desc *table_desc;
table_desc = &acpi_gbl_root_table_list.tables[i];
if (!ACPI_COMPARE_NAMESEG(&table_desc->signature, signature)) {
status = acpi_tb_get_table(table_desc, out_table);
struct acpi_table_desc *table_desc;
table_desc = &acpi_gbl_root_table_list.tables[i];
if (table_desc->pointer != table) {
acpi_tb_put_table(table_desc);
struct acpi_table_desc *table_desc = &initial_tables[i];
u64 start = table_desc->address;
u64 size = table_desc->length;
table_desc->signature.ascii, start, start + size - 1);
indirect_hdr->table_desc.va = cpu_to_be64(req->indirect_dma_addr);
indirect_hdr->table_desc.key = idb_rkey;
indirect_hdr->table_desc.len = cpu_to_be32(table_len);
int nbufs = be32_to_cpu(idb->table_desc.len) /
be32_to_cpu(idb->table_desc.len),
indirect->table_desc.va == 0) {
indirect->table_desc.va =
indirect->table_desc.va = 0;
indirect->table_desc.len = cpu_to_be32(sg_mapped *
indirect->table_desc.key = 0;
indirect->table_desc.va = cpu_to_be64(evt_struct->ext_list_token);
indirect->table_desc.len = cpu_to_be32(sg_mapped *
nmd = be32_to_cpu(id->table_desc.len) / sizeof(struct srp_direct_buf);
be32_to_cpu(id->table_desc.len),
be32_to_cpu(id->table_desc.len));
sg_init_one(&dummy, md, be32_to_cpu(id->table_desc.len));
sg_dma_len(&dummy) = be32_to_cpu(id->table_desc.len);
err = rdma_io(cmd, &dummy, 1, &id->table_desc, 1, DMA_TO_DEVICE,
be32_to_cpu(id->table_desc.len));
be32_to_cpu(id->table_desc.len), md, token);
struct srp_direct_buf table_desc __packed __aligned(4);
struct table_desc gdt1 = { .base = 0x3c3c3c3c, .limit = 0x9999 };
struct table_desc gdt2 = { .base = 0x1a1a1a1a, .limit = 0xaeae };
struct table_desc idt1 = { .base = 0x7b7b7b7b, .limit = 0xf1f1 };
struct table_desc idt2 = { .base = 0x89898989, .limit = 0x1313 };