Lines Matching +full:proc +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * acpi_tables.c - ACPI Boot-Time Table Parsing
60 switch (header->type) { in acpi_table_print_madt_entry()
67 p->processor_id, p->id, in acpi_table_print_madt_entry()
68 (p->lapic_flags & ACPI_MADT_ENABLED) ? "enabled" : "disabled"); in acpi_table_print_madt_entry()
77 p->local_apic_id, p->uid, in acpi_table_print_madt_entry()
78 (p->lapic_flags & ACPI_MADT_ENABLED) ? "enabled" : "disabled"); in acpi_table_print_madt_entry()
86 pr_debug("IOAPIC (id[0x%02x] address[0x%08x] gsi_base[%d])\n", in acpi_table_print_madt_entry()
87 p->id, p->address, p->global_irq_base); in acpi_table_print_madt_entry()
96 p->bus, p->source_irq, p->global_irq, in acpi_table_print_madt_entry()
97 mps_inti_flags_polarity[p->inti_flags & ACPI_MADT_POLARITY_MASK], in acpi_table_print_madt_entry()
98 mps_inti_flags_trigger[(p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2]); in acpi_table_print_madt_entry()
99 if (p->inti_flags & in acpi_table_print_madt_entry()
102 p->inti_flags & in acpi_table_print_madt_entry()
112 mps_inti_flags_polarity[p->inti_flags & ACPI_MADT_POLARITY_MASK], in acpi_table_print_madt_entry()
113 mps_inti_flags_trigger[(p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2], in acpi_table_print_madt_entry()
114 p->global_irq); in acpi_table_print_madt_entry()
123 p->processor_id, in acpi_table_print_madt_entry()
124 mps_inti_flags_polarity[p->inti_flags & ACPI_MADT_POLARITY_MASK ], in acpi_table_print_madt_entry()
125 mps_inti_flags_trigger[(p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2], in acpi_table_print_madt_entry()
126 p->lint); in acpi_table_print_madt_entry()
136 polarity = p->inti_flags & ACPI_MADT_POLARITY_MASK; in acpi_table_print_madt_entry()
137 trigger = (p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2; in acpi_table_print_madt_entry()
140 p->uid, in acpi_table_print_madt_entry()
143 p->lint); in acpi_table_print_madt_entry()
152 (void *)(unsigned long)p->address); in acpi_table_print_madt_entry()
160 pr_debug("IOSAPIC (id[0x%x] address[%p] gsi_base[%d])\n", in acpi_table_print_madt_entry()
161 p->id, (void *)(unsigned long)p->address, in acpi_table_print_madt_entry()
162 p->global_irq_base); in acpi_table_print_madt_entry()
171 p->processor_id, p->id, p->eid, in acpi_table_print_madt_entry()
172 (p->lapic_flags & ACPI_MADT_ENABLED) ? "enabled" : "disabled"); in acpi_table_print_madt_entry()
180 …pr_info("PLAT_INT_SRC (%s %s type[0x%x] id[0x%04x] eid[0x%x] iosapic_vector[0x%x] global_irq[0x%x]… in acpi_table_print_madt_entry()
181 mps_inti_flags_polarity[p->inti_flags & ACPI_MADT_POLARITY_MASK], in acpi_table_print_madt_entry()
182 mps_inti_flags_trigger[(p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2], in acpi_table_print_madt_entry()
183 p->type, p->id, p->eid, p->io_sapic_vector, in acpi_table_print_madt_entry()
184 p->global_irq); in acpi_table_print_madt_entry()
193 p->uid, p->base_address, in acpi_table_print_madt_entry()
194 p->arm_mpidr, in acpi_table_print_madt_entry()
195 (p->flags & ACPI_MADT_ENABLED) ? "enabled" : "disabled"); in acpi_table_print_madt_entry()
205 p->gic_id, p->base_address, in acpi_table_print_madt_entry()
206 p->global_irq_base); in acpi_table_print_madt_entry()
212 header->type); in acpi_table_print_madt_entry()
220 switch (entry->type) { in acpi_get_entry_type()
222 return entry->hdr->common.type; in acpi_get_entry_type()
224 return entry->hdr->hmat.type; in acpi_get_entry_type()
232 switch (entry->type) { in acpi_get_entry_length()
234 return entry->hdr->common.length; in acpi_get_entry_length()
236 return entry->hdr->hmat.length; in acpi_get_entry_length()
244 switch (entry->type) { in acpi_get_subtable_header_length()
246 return sizeof(entry->hdr->common); in acpi_get_subtable_header_length()
248 return sizeof(entry->hdr->hmat); in acpi_get_subtable_header_length()
254 acpi_get_subtable_type(char *id) in acpi_get_subtable_type() argument
256 if (strncmp(id, ACPI_SIG_HMAT, 4) == 0) in acpi_get_subtable_type()
262 * acpi_parse_entries_array - for each proc_num find a suitable subtable
264 * @id: table id (for debugging purposes)
267 * @proc: array of acpi_subtable_proc struct containing entry id
269 * @proc_num: how big proc is?
272 * For each proc_num find a subtable with proc->id and run proc->handler
274 * entry id.
281 * On success returns sum of all matching entries for all proc handlers.
282 * Otherwise, -ENODEV or -EINVAL is returned.
284 static int __init acpi_parse_entries_array(char *id, unsigned long table_size, in acpi_parse_entries_array() argument
286 struct acpi_subtable_proc *proc, int proc_num, in acpi_parse_entries_array() argument
295 table_end = (unsigned long)table_header + table_header->length; in acpi_parse_entries_array()
299 entry.type = acpi_get_subtable_type(id); in acpi_parse_entries_array()
309 if (acpi_get_entry_type(&entry) != proc[i].id) in acpi_parse_entries_array()
311 if (!proc[i].handler || in acpi_parse_entries_array()
312 (!errs && proc[i].handler(entry.hdr, table_end))) { in acpi_parse_entries_array()
317 proc[i].count++; in acpi_parse_entries_array()
324 * If entry->length is 0, break from this loop to avoid in acpi_parse_entries_array()
329 pr_err("[%4.4s:0x%02x] Invalid zero length\n", id, proc->id); in acpi_parse_entries_array()
330 return -EINVAL; in acpi_parse_entries_array()
339 id, proc->id, count); in acpi_parse_entries_array()
342 return errs ? -EINVAL : count; in acpi_parse_entries_array()
345 int __init acpi_table_parse_entries_array(char *id, in acpi_table_parse_entries_array() argument
347 struct acpi_subtable_proc *proc, int proc_num, in acpi_table_parse_entries_array() argument
355 return -ENODEV; in acpi_table_parse_entries_array()
357 if (!id) in acpi_table_parse_entries_array()
358 return -EINVAL; in acpi_table_parse_entries_array()
361 return -EINVAL; in acpi_table_parse_entries_array()
363 if (!strncmp(id, ACPI_SIG_MADT, 4)) in acpi_table_parse_entries_array()
366 acpi_get_table(id, instance, &table_header); in acpi_table_parse_entries_array()
368 pr_warn("%4.4s not present\n", id); in acpi_table_parse_entries_array()
369 return -ENODEV; in acpi_table_parse_entries_array()
372 count = acpi_parse_entries_array(id, table_size, table_header, in acpi_table_parse_entries_array()
373 proc, proc_num, max_entries); in acpi_table_parse_entries_array()
379 int __init acpi_table_parse_entries(char *id, in acpi_table_parse_entries() argument
385 struct acpi_subtable_proc proc = { in acpi_table_parse_entries() local
386 .id = entry_id, in acpi_table_parse_entries()
390 return acpi_table_parse_entries_array(id, table_size, &proc, 1, in acpi_table_parse_entries()
394 int __init acpi_table_parse_madt(enum acpi_madt_type id, in acpi_table_parse_madt() argument
398 sizeof(struct acpi_table_madt), id, in acpi_table_parse_madt()
403 * acpi_table_parse - find table with @id, run @handler on it
404 * @id: table id to find
407 * Scan the ACPI System Descriptor Table (STD) for a table matching @id,
410 * Return 0 if table found, -errno if not.
412 int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler) in acpi_table_parse() argument
417 return -ENODEV; in acpi_table_parse()
419 if (!id || !handler) in acpi_table_parse()
420 return -EINVAL; in acpi_table_parse()
422 if (strncmp(id, ACPI_SIG_MADT, 4) == 0) in acpi_table_parse()
423 acpi_get_table(id, acpi_apic_instance, &table); in acpi_table_parse()
425 acpi_get_table(id, 0, &table); in acpi_table_parse()
432 return -ENODEV; in acpi_table_parse()
449 "notify linux-acpi@vger.kernel.org\n", in check_multiple_madt()
461 pr_warn("Override [%4.4s-%8.8s], this is unsafe: tainting kernel\n", in acpi_table_taint()
462 table->signature, table->oem_table_id); in acpi_table_taint()
518 size = initrd_end - initrd_start; in acpi_table_upgrade()
530 size -= offset; in acpi_table_upgrade()
541 if (!memcmp(table->signature, table_sigs[sig], 4)) in acpi_table_upgrade()
549 if (file.size != table->length) { in acpi_table_upgrade()
554 if (acpi_table_checksum(file.data, table->length)) { in acpi_table_upgrade()
561 table->signature, cpio_path, file.name, table->length); in acpi_table_upgrade()
563 all_tables_size += table->length; in acpi_table_upgrade()
613 if (clen > MAP_CHUNK_SIZE - slop) in acpi_table_upgrade()
614 clen = MAP_CHUNK_SIZE - slop; in acpi_table_upgrade()
621 size -= clen; in acpi_table_upgrade()
643 if (table_offset + table->length > all_tables_size) { in acpi_table_initrd_override()
649 table_length = table->length; in acpi_table_initrd_override()
652 if (memcmp(existing_table->signature, table->signature, 4) || in acpi_table_initrd_override()
653 memcmp(table->oem_id, existing_table->oem_id, in acpi_table_initrd_override()
655 memcmp(table->oem_table_id, existing_table->oem_table_id, in acpi_table_initrd_override()
665 existing_table->oem_revision >= table->oem_revision) { in acpi_table_initrd_override()
672 pr_info("Table Upgrade: override [%4.4s-%6.6s-%8.8s]\n", in acpi_table_initrd_override()
673 table->signature, table->oem_id, in acpi_table_initrd_override()
674 table->oem_table_id); in acpi_table_initrd_override()
698 if (table_offset + table->length > all_tables_size) { in acpi_table_initrd_scan()
704 table_length = table->length; in acpi_table_initrd_scan()
707 if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_RSDT) || in acpi_table_initrd_scan()
708 ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_XSDT)) { in acpi_table_initrd_scan()
722 pr_info("Table Upgrade: install [%4.4s-%6.6s-%8.8s]\n", in acpi_table_initrd_scan()
723 table->signature, table->oem_id, in acpi_table_initrd_scan()
724 table->oem_table_id); in acpi_table_initrd_scan()
771 if (!strncmp(existing_table->signature, "DSDT", 4)) { in acpi_os_table_override()
805 return -EINVAL; in acpi_table_init()
815 return -EINVAL; in acpi_parse_apic_instance()
818 return -EINVAL; in acpi_parse_apic_instance()