Skip to content

Commit 53ac64a

Browse files
committed
Merge tag 'acpi-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI updates from Rafael Wysocki: "These include a usual ACPICA code update (this time to upstream revision 20170728), a fix for a boot crash on some systems with Thunderbolt devices connected at boot time, a rework of the handling of PCI bridges when setting up device wakeup, new support for Apple device properties, support for DMA configurations reported via ACPI on ARM64, APEI-related updates, ACPI EC driver updates and assorted minor modifications in several places. Specifics: - Update the ACPICA code in the kernel to upstream revision 20170728 including: * Alias operator handling update (Bob Moore). * Deferred resolution of reference package elements (Bob Moore). * Support for the _DMA method in walk resources (Bob Moore). * Tables handling update and support for deferred table verification (Lv Zheng). * Update of SMMU models for IORT (Robin Murphy). * Compiler and disassembler updates (Alex James, Erik Schmauss, Ganapatrao Kulkarni, James Morse). * Tools updates (Erik Schmauss, Lv Zheng). * Assorted minor fixes and cleanups (Bob Moore, Kees Cook, Lv Zheng, Shao Ming). - Rework the initialization of non-wakeup GPEs with method handlers in order to address a boot crash on some systems with Thunderbolt devices connected at boot time where we miss an early hotplug event due to a delay in GPE enabling (Rafael Wysocki). - Rework the handling of PCI bridges when setting up ACPI-based device wakeup in order to avoid disabling wakeup for bridges prematurely (Rafael Wysocki). - Consolidate Apple DMI checks throughout the tree, add support for Apple device properties to the device properties framework and use these properties for the handling of I2C and SPI devices on Apple systems (Lukas Wunner). - Add support for _DMA to the ACPI-based device properties lookup code and make it possible to use the information from there to configure DMA regions on ARM64 systems (Lorenzo Pieralisi). - Fix several issues in the APEI code, add support for exporting the BERT error region over sysfs and update APEI MAINTAINERS entry with reviewers information (Borislav Petkov, Dongjiu Geng, Loc Ho, Punit Agrawal, Tony Luck, Yazen Ghannam). - Fix a potential initialization ordering issue in the ACPI EC driver and clean it up somewhat (Lv Zheng). - Update the ACPI SPCR driver to extend the existing XGENE 8250 workaround in it to a new platform (m400) and to work around an Xgene UART clock issue (Graeme Gregory). - Add a new utility function to the ACPI core to support using ACPI OEM ID / OEM Table ID / Revision for system identification in blacklisting or similar and switch over the existing code already using this information to this new interface (Toshi Kani). - Fix an xpower PMIC issue related to GPADC reads that always return 0 without extra pin manipulations (Hans de Goede). - Add statements to print debug messages in a couple of places in the ACPI core for easier diagnostics (Rafael Wysocki). - Clean up the ACPI processor driver slightly (Colin Ian King, Hanjun Guo). - Clean up the ACPI x86 boot code somewhat (Andy Shevchenko). - Add a quirk for Dell OptiPlex 9020M to the ACPI backlight driver (Alex Hung). - Assorted fixes, cleanups and updates related to ACPI (Amitoj Kaur Chawla, Bhumika Goyal, Frank Rowand, Jean Delvare, Punit Agrawal, Ronald Tschalär, Sumeet Pawnikar)" * tag 'acpi-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (75 commits) ACPI / APEI: Suppress message if HEST not present intel_pstate: convert to use acpi_match_platform_list() ACPI / blacklist: add acpi_match_platform_list() ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources ACPI: make device_attribute const ACPI / sysfs: Extend ACPI sysfs to provide access to boot error region ACPI: APEI: fix the wrong iteration of generic error status block ACPI / processor: make function acpi_processor_check_duplicates() static ACPI / EC: Clean up EC GPE mask flag ACPI: EC: Fix possible issues related to EC initialization order ACPI / PM: Add debug statements to acpi_pm_notify_handler() ACPI: Add debug statements to acpi_global_event_handler() ACPI / scan: Enable GPEs before scanning the namespace ACPICA: Make it possible to enable runtime GPEs earlier ACPICA: Dispatch active GPEs at init time ACPI: SPCR: work around clock issue on xgene UART ACPI: SPCR: extend XGENE 8250 workaround to m400 ACPI / LPSS: Don't abort ACPI scan on missing mem resource mailbox: pcc: Drop uninformative output during boot ACPI/IORT: Add IORT named component memory address limits ...
2 parents 4396440 + 298bd7f commit 53ac64a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+2433
-1040
lines changed

MAINTAINERS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ S: Supported
301301
F: drivers/acpi/
302302
F: drivers/pnp/pnpacpi/
303303
F: include/linux/acpi.h
304+
F: include/linux/fwnode.h
304305
F: include/acpi/
305306
F: Documentation/acpi/
306307
F: Documentation/ABI/testing/sysfs-bus-acpi
@@ -310,6 +311,14 @@ F: drivers/pci/*/*acpi*
310311
F: drivers/pci/*/*/*acpi*
311312
F: tools/power/acpi/
312313

314+
ACPI APEI
315+
M: "Rafael J. Wysocki" <[email protected]>
316+
M: Len Brown <[email protected]>
317+
318+
R: Tony Luck <[email protected]>
319+
R: Borislav Petkov <[email protected]>
320+
F: drivers/acpi/apei/
321+
313322
ACPI COMPONENT ARCHITECTURE (ACPICA)
314323
M: Robert Moore <[email protected]>
315324
M: Lv Zheng <[email protected]>

arch/arm64/kernel/acpi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,15 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
9595
* __acpi_map_table() will be called before page_init(), so early_ioremap()
9696
* or early_memremap() should be called here to for ACPI table mapping.
9797
*/
98-
char *__init __acpi_map_table(unsigned long phys, unsigned long size)
98+
void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
9999
{
100100
if (!size)
101101
return NULL;
102102

103103
return early_memremap(phys, size);
104104
}
105105

106-
void __init __acpi_unmap_table(char *map, unsigned long size)
106+
void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
107107
{
108108
if (!map || !size)
109109
return;

arch/ia64/kernel/acpi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,12 @@ int acpi_request_vector(u32 int_type)
159159
return vector;
160160
}
161161

162-
char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
162+
void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
163163
{
164-
return __va(phys_addr);
164+
return __va(phys);
165165
}
166166

167-
void __init __acpi_unmap_table(char *map, unsigned long size)
167+
void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
168168
{
169169
}
170170

arch/x86/include/asm/setup.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ static inline void vsmp_init(void) { }
3939
#endif
4040

4141
void setup_bios_corruption_check(void);
42+
void early_platform_quirks(void);
4243

4344
extern unsigned long saved_video_mode;
4445

arch/x86/kernel/acpi/boot.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static u32 isa_irq_to_gsi[NR_IRQS_LEGACY] __read_mostly = {
118118
* This is just a simple wrapper around early_memremap(),
119119
* with sanity checks for phys == 0 and size == 0.
120120
*/
121-
char *__init __acpi_map_table(unsigned long phys, unsigned long size)
121+
void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
122122
{
123123

124124
if (!phys || !size)
@@ -127,7 +127,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
127127
return early_memremap(phys, size);
128128
}
129129

130-
void __init __acpi_unmap_table(char *map, unsigned long size)
130+
void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
131131
{
132132
if (!map || !size)
133133
return;
@@ -199,8 +199,10 @@ static int __init
199199
acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
200200
{
201201
struct acpi_madt_local_x2apic *processor = NULL;
202+
#ifdef CONFIG_X86_X2APIC
202203
int apic_id;
203204
u8 enabled;
205+
#endif
204206

205207
processor = (struct acpi_madt_local_x2apic *)header;
206208

@@ -209,9 +211,10 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
209211

210212
acpi_table_print_madt_entry(header);
211213

214+
#ifdef CONFIG_X86_X2APIC
212215
apic_id = processor->local_apic_id;
213216
enabled = processor->lapic_flags & ACPI_MADT_ENABLED;
214-
#ifdef CONFIG_X86_X2APIC
217+
215218
/*
216219
* We need to register disabled CPU as well to permit
217220
* counting disabled CPUs. This allows us to size
@@ -1083,7 +1086,7 @@ static void __init mp_config_acpi_legacy_irqs(void)
10831086
mp_bus_id_to_type[MP_ISA_BUS] = MP_BUS_ISA;
10841087
#endif
10851088
set_bit(MP_ISA_BUS, mp_bus_not_pci);
1086-
pr_debug("Bus #%d is ISA\n", MP_ISA_BUS);
1089+
pr_debug("Bus #%d is ISA (nIRQs: %d)\n", MP_ISA_BUS, nr_legacy_irqs());
10871090

10881091
/*
10891092
* Use the default configuration for the IRQs 0-15. Unless

arch/x86/kernel/early-quirks.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
#include <linux/pci.h>
1313
#include <linux/acpi.h>
1414
#include <linux/delay.h>
15-
#include <linux/dmi.h>
1615
#include <linux/pci_ids.h>
1716
#include <linux/bcma/bcma.h>
1817
#include <linux/bcma/bcma_regs.h>
18+
#include <linux/platform_data/x86/apple.h>
1919
#include <drm/i915_drm.h>
2020
#include <asm/pci-direct.h>
2121
#include <asm/dma.h>
@@ -594,7 +594,7 @@ static void __init apple_airport_reset(int bus, int slot, int func)
594594
u64 addr;
595595
int i;
596596

597-
if (!dmi_match(DMI_SYS_VENDOR, "Apple Inc."))
597+
if (!x86_apple_machine)
598598
return;
599599

600600
/* Card may have been put into PCI_D3hot by grub quirk */

arch/x86/kernel/quirks.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/*
22
* This file contains work-arounds for x86 and x86_64 platform bugs.
33
*/
4+
#include <linux/dmi.h>
45
#include <linux/pci.h>
56
#include <linux/irq.h>
67

@@ -656,3 +657,12 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, quirk_intel_brickland_xeon_
656657
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2083, quirk_intel_purley_xeon_ras_cap);
657658
#endif
658659
#endif
660+
661+
bool x86_apple_machine;
662+
EXPORT_SYMBOL(x86_apple_machine);
663+
664+
void __init early_platform_quirks(void)
665+
{
666+
x86_apple_machine = dmi_match(DMI_SYS_VENDOR, "Apple Inc.") ||
667+
dmi_match(DMI_SYS_VENDOR, "Apple Computer, Inc.");
668+
}

arch/x86/kernel/setup.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,6 +1216,8 @@ void __init setup_arch(char **cmdline_p)
12161216

12171217
io_delay_init();
12181218

1219+
early_platform_quirks();
1220+
12191221
/*
12201222
* Parse the ACPI tables for possible boot-time SMP configuration.
12211223
*/

drivers/acpi/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ acpi-$(CONFIG_ACPI_REDUCED_HARDWARE_ONLY) += evged.o
5050
acpi-y += sysfs.o
5151
acpi-y += property.o
5252
acpi-$(CONFIG_X86) += acpi_cmos_rtc.o
53+
acpi-$(CONFIG_X86) += x86/apple.o
5354
acpi-$(CONFIG_X86) += x86/utils.o
5455
acpi-$(CONFIG_DEBUG_FS) += debugfs.o
5556
acpi-$(CONFIG_ACPI_NUMA) += numa.o

drivers/acpi/acpi_lpat.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* @raw: the raw value, used as a key to get the temerature from the
2626
* above mapping table
2727
*
28-
* A positive converted temperarure value will be returned on success,
28+
* A positive converted temperature value will be returned on success,
2929
* a negative errno will be returned in error cases.
3030
*/
3131
int acpi_lpat_raw_to_temp(struct acpi_lpat_conversion_table *lpat_table,
@@ -55,11 +55,11 @@ EXPORT_SYMBOL_GPL(acpi_lpat_raw_to_temp);
5555
* acpi_lpat_temp_to_raw(): Return raw value from temperature through
5656
* LPAT conversion table
5757
*
58-
* @lpat: the temperature_raw mapping table
58+
* @lpat_table: the temperature_raw mapping table
5959
* @temp: the temperature, used as a key to get the raw value from the
6060
* above mapping table
6161
*
62-
* A positive converted temperature value will be returned on success,
62+
* The raw value will be returned on success,
6363
* a negative errno will be returned in error cases.
6464
*/
6565
int acpi_lpat_temp_to_raw(struct acpi_lpat_conversion_table *lpat_table,

drivers/acpi/acpi_lpss.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,8 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
465465
acpi_dev_free_resource_list(&resource_list);
466466

467467
if (!pdata->mmio_base) {
468-
ret = -ENOMEM;
468+
/* Skip the device, but continue the namespace scan. */
469+
ret = 0;
469470
goto err_out;
470471
}
471472

drivers/acpi/acpi_processor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ static acpi_status __init acpi_processor_ids_walk(acpi_handle handle,
670670

671671
}
672672

673-
void __init acpi_processor_check_duplicates(void)
673+
static void __init acpi_processor_check_duplicates(void)
674674
{
675675
/* check the correctness for all processors in ACPI namespace */
676676
acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,

drivers/acpi/acpica/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ acpi-y := \
1818
dsmthdat.o \
1919
dsobject.o \
2020
dsopcode.o \
21+
dspkginit.o \
2122
dsutils.o \
2223
dswexec.o \
2324
dswload.o \

drivers/acpi/acpica/acapps.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ ac_get_all_tables_from_file(char *filename,
114114
u8 get_only_aml_tables,
115115
struct acpi_new_table_desc **return_list_head);
116116

117+
void ac_delete_table_list(struct acpi_new_table_desc *list_head);
118+
117119
u8 ac_is_file_binary(FILE * file);
118120

119121
acpi_status ac_validate_table_header(FILE * file, long table_offset);

drivers/acpi/acpica/acdispat.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,11 @@ acpi_ds_initialize_objects(u32 table_index,
237237
* dsobject - Parser/Interpreter interface - object initialization and conversion
238238
*/
239239
acpi_status
240+
acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,
241+
union acpi_parse_object *op,
242+
union acpi_operand_object **obj_desc_ptr);
243+
244+
acpi_status
240245
acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,
241246
union acpi_parse_object *op,
242247
u32 buffer_length,
@@ -258,6 +263,14 @@ acpi_ds_create_node(struct acpi_walk_state *walk_state,
258263
struct acpi_namespace_node *node,
259264
union acpi_parse_object *op);
260265

266+
/*
267+
* dspkginit - Package object initialization
268+
*/
269+
acpi_status
270+
acpi_ds_init_package_element(u8 object_type,
271+
union acpi_operand_object *source_object,
272+
union acpi_generic_state *state, void *context);
273+
261274
/*
262275
* dsutils - Parser/Interpreter interface utility routines
263276
*/

drivers/acpi/acpica/aclocal.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ struct acpi_namespace_node {
199199
#define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */
200200
#define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (install_method) */
201201

202+
#define IMPLICIT_EXTERNAL 0x02 /* iASL only: This object created implicitly via External */
202203
#define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */
203204
#define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */
204205
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */
@@ -604,7 +605,7 @@ struct acpi_update_state {
604605
* Pkg state - used to traverse nested package structures
605606
*/
606607
struct acpi_pkg_state {
607-
ACPI_STATE_COMMON u16 index;
608+
ACPI_STATE_COMMON u32 index;
608609
union acpi_operand_object *source_object;
609610
union acpi_operand_object *dest_object;
610611
struct acpi_walk_state *walk_state;
@@ -867,7 +868,7 @@ struct acpi_parse_obj_named {
867868

868869
/* This version is used by the iASL compiler only */
869870

870-
#define ACPI_MAX_PARSEOP_NAME 20
871+
#define ACPI_MAX_PARSEOP_NAME 20
871872

872873
struct acpi_parse_obj_asl {
873874
ACPI_PARSE_COMMON union acpi_parse_object *child;
@@ -907,7 +908,7 @@ union acpi_parse_object {
907908
struct asl_comment_state {
908909
u8 comment_type;
909910
u32 spaces_before;
910-
union acpi_parse_object *latest_parse_node;
911+
union acpi_parse_object *latest_parse_op;
911912
union acpi_parse_object *parsing_paren_brace_node;
912913
u8 capture_comments;
913914
};

drivers/acpi/acpica/acobject.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ struct acpi_object_integer {
122122
_type *pointer; \
123123
u32 length;
124124

125-
struct acpi_object_string { /* Null terminated, ASCII characters only */
125+
/* Null terminated, ASCII characters only */
126+
127+
struct acpi_object_string {
126128
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO(char) /* String in AML stream or allocated string */
127129
};
128130

@@ -211,7 +213,9 @@ struct acpi_object_method {
211213
union acpi_operand_object *notify_list[2]; /* Handlers for system/device notifies */\
212214
union acpi_operand_object *handler; /* Handler for Address space */
213215

214-
struct acpi_object_notify_common { /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
216+
/* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
217+
218+
struct acpi_object_notify_common {
215219
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
216220

217221
struct acpi_object_device {
@@ -258,7 +262,9 @@ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
258262
u8 access_length; /* For serial regions/fields */
259263

260264

261-
struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
265+
/* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
266+
267+
struct acpi_object_field_common {
262268
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Parent Operation Region object (REGION/BANK fields only) */
263269
};
264270

@@ -333,11 +339,12 @@ struct acpi_object_addr_handler {
333339
struct acpi_object_reference {
334340
ACPI_OBJECT_COMMON_HEADER u8 class; /* Reference Class */
335341
u8 target_type; /* Used for Index Op */
336-
u8 reserved;
342+
u8 resolved; /* Reference has been resolved to a value */
337343
void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
338344
struct acpi_namespace_node *node; /* ref_of or Namepath */
339345
union acpi_operand_object **where; /* Target of Index */
340346
u8 *index_pointer; /* Used for Buffers and Strings */
347+
u8 *aml; /* Used for deferred resolution of the ref */
341348
u32 value; /* Used for Local/Arg/Index/ddb_handle */
342349
};
343350

drivers/acpi/acpica/actables.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ void acpi_tb_release_temp_table(struct acpi_table_desc *table_desc);
7676
acpi_status acpi_tb_validate_temp_table(struct acpi_table_desc *table_desc);
7777

7878
acpi_status
79-
acpi_tb_verify_temp_table(struct acpi_table_desc *table_desc, char *signature);
79+
acpi_tb_verify_temp_table(struct acpi_table_desc *table_desc,
80+
char *signature, u32 *table_index);
8081

8182
u8 acpi_tb_is_table_loaded(u32 table_index);
8283

@@ -132,6 +133,8 @@ acpi_tb_install_and_load_table(acpi_physical_address address,
132133

133134
acpi_status acpi_tb_unload_table(u32 table_index);
134135

136+
void acpi_tb_notify_table(u32 event, void *table);
137+
135138
void acpi_tb_terminate(void);
136139

137140
acpi_status acpi_tb_delete_namespace_by_owner(u32 table_index);

drivers/acpi/acpica/acutils.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
516516

517517
union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
518518
void *external_object,
519-
u16 index);
519+
u32 index);
520520

521521
acpi_status
522522
acpi_ut_create_update_state_and_push(union acpi_operand_object *object,
@@ -538,6 +538,13 @@ acpi_status
538538
acpi_ut_short_divide(u64 in_dividend,
539539
u32 divisor, u64 *out_quotient, u32 *out_remainder);
540540

541+
acpi_status
542+
acpi_ut_short_multiply(u64 in_multiplicand, u32 multiplier, u64 *outproduct);
543+
544+
acpi_status acpi_ut_short_shift_left(u64 operand, u32 count, u64 *out_result);
545+
546+
acpi_status acpi_ut_short_shift_right(u64 operand, u32 count, u64 *out_result);
547+
541548
/*
542549
* utmisc
543550
*/

0 commit comments

Comments
 (0)