Skip to content

Commit c58364a

Browse files
committed
Merge branches 'acpi-soc', 'acpi-fan', 'acpi-dptf', 'acpi-pfrut', 'acpi-prm' and 'acpi-tad'
Merge updates of assorted ACPI drivers for 6.17-rc1: - Remove an AudioDSP-related ID from the ACPI LPSS driver (Andy Shevchenko) - Replace sprintf()/scnprintf() with sysfs_emit() in the ACPI fan driver and update a debug message in fan_get_state_acpi4() (Eslam Khafagy, Abdelrahman Fekry, Sumeet Pawnikar) - Add Intel Wildcat Lake support to the ACPI DPTF driver (Srinivas Pandruvada) - Add more debug information regarding failing firmware updates to the ACPI pfr_update driver (Chen Yu) - Reduce the verbosity of the ACPI PRM (platform runtime mechanism) driver to avoid user confusion (Zhu Qiyu) - Replace sprintf() with sysfs_emit() in the ACPI TAD (time and alarm device) driver (Sukrut Heroorkar) * acpi-soc: ACPI: LPSS: Remove AudioDSP related ID * acpi-fan: ACPI: fan: Update debug message in fan_get_state_acpi4() ACPI: fan: Replace sprintf() with sysfs_emit() ACPI: fan: Replace sprintf()/scnprintf() with sysfs_emit() in show() functions * acpi-dptf: ACPI: DPTF: Support for Wildcat Lake * acpi-pfrut: ACPI: pfr_update: Add more debug information when firmware update failed * acpi-prm: ACPI: PRM: Reduce unnecessary printing to avoid user confusion * acpi-tad: ACPI: TAD: Replace sprintf() with sysfs_emit()
7 parents 6984f94 + 151c1f9 + c9d5211 + 9cf4575 + 1caf3f7 + 3db5648 + cf115eb commit c58364a

11 files changed

Lines changed: 91 additions & 27 deletions

File tree

drivers/acpi/acpi_tad.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ static ssize_t time_show(struct device *dev, struct device_attribute *attr,
233233
if (ret)
234234
return ret;
235235

236-
return sprintf(buf, "%u:%u:%u:%u:%u:%u:%d:%u\n",
236+
return sysfs_emit(buf, "%u:%u:%u:%u:%u:%u:%d:%u\n",
237237
rt.year, rt.month, rt.day, rt.hour, rt.minute, rt.second,
238238
rt.tz, rt.daylight);
239239
}
@@ -428,7 +428,7 @@ static ssize_t caps_show(struct device *dev, struct device_attribute *attr,
428428
{
429429
struct acpi_tad_driver_data *dd = dev_get_drvdata(dev);
430430

431-
return sprintf(buf, "0x%02X\n", dd->capabilities);
431+
return sysfs_emit(buf, "0x%02X\n", dd->capabilities);
432432
}
433433

434434
static DEVICE_ATTR_RO(caps);

drivers/acpi/dptf/dptf_power.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@ static const struct acpi_device_id int3407_device_ids[] = {
238238
{"INTC10A5", 0},
239239
{"INTC10D8", 0},
240240
{"INTC10D9", 0},
241+
{"INTC1100", 0},
242+
{"INTC1101", 0},
241243
{"", 0},
242244
};
243245
MODULE_DEVICE_TABLE(acpi, int3407_device_ids);

drivers/acpi/dptf/int340x_thermal.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
6161
{"INTC10D7"},
6262
{"INTC10D8"},
6363
{"INTC10D9"},
64+
{"INTC10FC"},
65+
{"INTC10FD"},
66+
{"INTC10FE"},
67+
{"INTC10FF"},
68+
{"INTC1100"},
69+
{"INTC1101"},
70+
{"INTC1102"},
6471
{""},
6572
};
6673

drivers/acpi/fan.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
{"INTC106A", }, /* Fan for Lunar Lake generation */ \
2121
{"INTC10A2", }, /* Fan for Raptor Lake generation */ \
2222
{"INTC10D6", }, /* Fan for Panther Lake generation */ \
23+
{"INTC10FE", }, /* Fan for Wildcat Lake generation */ \
2324
{"PNP0C0B", } /* Generic ACPI fan */
2425

2526
#define ACPI_FPS_NAME_LEN 20

drivers/acpi/fan_attr.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ static ssize_t show_state(struct device *dev, struct device_attribute *attr, cha
2222
int count;
2323

2424
if (fps->control == 0xFFFFFFFF || fps->control > 100)
25-
count = scnprintf(buf, PAGE_SIZE, "not-defined:");
25+
count = sysfs_emit(buf, "not-defined:");
2626
else
27-
count = scnprintf(buf, PAGE_SIZE, "%lld:", fps->control);
27+
count = sysfs_emit(buf, "%lld:", fps->control);
2828

2929
if (fps->trip_point == 0xFFFFFFFF || fps->trip_point > 9)
3030
count += sysfs_emit_at(buf, count, "not-defined:");
@@ -59,15 +59,15 @@ static ssize_t show_fan_speed(struct device *dev, struct device_attribute *attr,
5959
if (status)
6060
return status;
6161

62-
return sprintf(buf, "%lld\n", fst.speed);
62+
return sysfs_emit(buf, "%lld\n", fst.speed);
6363
}
6464

6565
static ssize_t show_fine_grain_control(struct device *dev, struct device_attribute *attr, char *buf)
6666
{
6767
struct acpi_device *acpi_dev = container_of(dev, struct acpi_device, dev);
6868
struct acpi_fan *fan = acpi_driver_data(acpi_dev);
6969

70-
return sprintf(buf, "%d\n", fan->fif.fine_grain_ctrl);
70+
return sysfs_emit(buf, "%d\n", fan->fif.fine_grain_ctrl);
7171
}
7272

7373
int acpi_fan_create_attributes(struct acpi_device *device)

drivers/acpi/fan_core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static int fan_get_state_acpi4(struct acpi_device *device, unsigned long *state)
102102
break;
103103
}
104104
if (i == fan->fps_count) {
105-
dev_dbg(&device->dev, "Invalid control value returned\n");
105+
dev_dbg(&device->dev, "No matching fps control value\n");
106106
return -EINVAL;
107107
}
108108

drivers/acpi/pfr_update.c

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,11 @@ static int query_capability(struct pfru_update_cap_info *cap_hdr,
127127
pfru_dev->rev_id,
128128
PFRU_FUNC_QUERY_UPDATE_CAP,
129129
NULL, ACPI_TYPE_PACKAGE);
130-
if (!out_obj)
130+
if (!out_obj) {
131+
dev_dbg(pfru_dev->parent_dev,
132+
"Query cap failed with no object\n");
131133
return ret;
134+
}
132135

133136
if (out_obj->package.count < CAP_NR_IDX ||
134137
out_obj->package.elements[CAP_STATUS_IDX].type != ACPI_TYPE_INTEGER ||
@@ -141,13 +144,17 @@ static int query_capability(struct pfru_update_cap_info *cap_hdr,
141144
out_obj->package.elements[CAP_DRV_SVN_IDX].type != ACPI_TYPE_INTEGER ||
142145
out_obj->package.elements[CAP_PLAT_ID_IDX].type != ACPI_TYPE_BUFFER ||
143146
out_obj->package.elements[CAP_OEM_ID_IDX].type != ACPI_TYPE_BUFFER ||
144-
out_obj->package.elements[CAP_OEM_INFO_IDX].type != ACPI_TYPE_BUFFER)
147+
out_obj->package.elements[CAP_OEM_INFO_IDX].type != ACPI_TYPE_BUFFER) {
148+
dev_dbg(pfru_dev->parent_dev,
149+
"Query cap failed with invalid package count/type\n");
145150
goto free_acpi_buffer;
151+
}
146152

147153
cap_hdr->status = out_obj->package.elements[CAP_STATUS_IDX].integer.value;
148154
if (cap_hdr->status != DSM_SUCCEED) {
149155
ret = -EBUSY;
150-
dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", cap_hdr->status);
156+
dev_dbg(pfru_dev->parent_dev, "Query cap Error Status:%d\n",
157+
cap_hdr->status);
151158
goto free_acpi_buffer;
152159
}
153160

@@ -193,24 +200,32 @@ static int query_buffer(struct pfru_com_buf_info *info,
193200
out_obj = acpi_evaluate_dsm_typed(handle, &pfru_guid,
194201
pfru_dev->rev_id, PFRU_FUNC_QUERY_BUF,
195202
NULL, ACPI_TYPE_PACKAGE);
196-
if (!out_obj)
203+
if (!out_obj) {
204+
dev_dbg(pfru_dev->parent_dev,
205+
"Query buf failed with no object\n");
197206
return ret;
207+
}
198208

199209
if (out_obj->package.count < BUF_NR_IDX ||
200210
out_obj->package.elements[BUF_STATUS_IDX].type != ACPI_TYPE_INTEGER ||
201211
out_obj->package.elements[BUF_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER ||
202212
out_obj->package.elements[BUF_ADDR_LOW_IDX].type != ACPI_TYPE_INTEGER ||
203213
out_obj->package.elements[BUF_ADDR_HI_IDX].type != ACPI_TYPE_INTEGER ||
204-
out_obj->package.elements[BUF_SIZE_IDX].type != ACPI_TYPE_INTEGER)
214+
out_obj->package.elements[BUF_SIZE_IDX].type != ACPI_TYPE_INTEGER) {
215+
dev_dbg(pfru_dev->parent_dev,
216+
"Query buf failed with invalid package count/type\n");
205217
goto free_acpi_buffer;
218+
}
206219

207220
info->status = out_obj->package.elements[BUF_STATUS_IDX].integer.value;
208221
info->ext_status =
209222
out_obj->package.elements[BUF_EXT_STATUS_IDX].integer.value;
210223
if (info->status != DSM_SUCCEED) {
211224
ret = -EBUSY;
212-
dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", info->status);
213-
dev_dbg(pfru_dev->parent_dev, "Error Extended Status:%d\n", info->ext_status);
225+
dev_dbg(pfru_dev->parent_dev,
226+
"Query buf failed with Error Status:%d\n", info->status);
227+
dev_dbg(pfru_dev->parent_dev,
228+
"Query buf failed with Error Extended Status:%d\n", info->ext_status);
214229

215230
goto free_acpi_buffer;
216231
}
@@ -295,12 +310,16 @@ static bool applicable_image(const void *data, struct pfru_update_cap_info *cap,
295310
m_img_hdr = data + size;
296311

297312
type = get_image_type(m_img_hdr, pfru_dev);
298-
if (type < 0)
313+
if (type < 0) {
314+
dev_dbg(pfru_dev->parent_dev, "Invalid image type\n");
299315
return false;
316+
}
300317

301318
size = adjust_efi_size(m_img_hdr, size);
302-
if (size < 0)
319+
if (size < 0) {
320+
dev_dbg(pfru_dev->parent_dev, "Invalid image size\n");
303321
return false;
322+
}
304323

305324
auth = data + size;
306325
size += sizeof(u64) + auth->auth_info.hdr.len;
@@ -346,17 +365,23 @@ static int start_update(int action, struct pfru_device *pfru_dev)
346365
out_obj = acpi_evaluate_dsm_typed(handle, &pfru_guid,
347366
pfru_dev->rev_id, PFRU_FUNC_START,
348367
&in_obj, ACPI_TYPE_PACKAGE);
349-
if (!out_obj)
368+
if (!out_obj) {
369+
dev_dbg(pfru_dev->parent_dev,
370+
"Update failed to start with no object\n");
350371
return ret;
372+
}
351373

352374
if (out_obj->package.count < UPDATE_NR_IDX ||
353375
out_obj->package.elements[UPDATE_STATUS_IDX].type != ACPI_TYPE_INTEGER ||
354376
out_obj->package.elements[UPDATE_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER ||
355377
out_obj->package.elements[UPDATE_AUTH_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER ||
356378
out_obj->package.elements[UPDATE_AUTH_TIME_HI_IDX].type != ACPI_TYPE_INTEGER ||
357379
out_obj->package.elements[UPDATE_EXEC_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER ||
358-
out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].type != ACPI_TYPE_INTEGER)
380+
out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].type != ACPI_TYPE_INTEGER) {
381+
dev_dbg(pfru_dev->parent_dev,
382+
"Update failed with invalid package count/type\n");
359383
goto free_acpi_buffer;
384+
}
360385

361386
update_result.status =
362387
out_obj->package.elements[UPDATE_STATUS_IDX].integer.value;
@@ -365,8 +390,10 @@ static int start_update(int action, struct pfru_device *pfru_dev)
365390

366391
if (update_result.status != DSM_SUCCEED) {
367392
ret = -EBUSY;
368-
dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", update_result.status);
369-
dev_dbg(pfru_dev->parent_dev, "Error Extended Status:%d\n",
393+
dev_dbg(pfru_dev->parent_dev,
394+
"Update failed with Error Status:%d\n", update_result.status);
395+
dev_dbg(pfru_dev->parent_dev,
396+
"Update failed with Error Extended Status:%d\n",
370397
update_result.ext_status);
371398

372399
goto free_acpi_buffer;
@@ -450,8 +477,10 @@ static ssize_t pfru_write(struct file *file, const char __user *buf,
450477
if (ret)
451478
return ret;
452479

453-
if (len > buf_info.buf_size)
480+
if (len > buf_info.buf_size) {
481+
dev_dbg(pfru_dev->parent_dev, "Capsule image size too large\n");
454482
return -EINVAL;
483+
}
455484

456485
iov.iov_base = (void __user *)buf;
457486
iov.iov_len = len;
@@ -460,10 +489,14 @@ static ssize_t pfru_write(struct file *file, const char __user *buf,
460489
/* map the communication buffer */
461490
phy_addr = (phys_addr_t)((buf_info.addr_hi << 32) | buf_info.addr_lo);
462491
buf_ptr = memremap(phy_addr, buf_info.buf_size, MEMREMAP_WB);
463-
if (!buf_ptr)
492+
if (!buf_ptr) {
493+
dev_dbg(pfru_dev->parent_dev, "Failed to remap the buffer\n");
464494
return -ENOMEM;
495+
}
465496

466497
if (!copy_from_iter_full(buf_ptr, len, &iter)) {
498+
dev_dbg(pfru_dev->parent_dev,
499+
"Failed to copy the data from the user space buffer\n");
467500
ret = -EINVAL;
468501
goto unmap;
469502
}

drivers/acpi/prmt.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ static u64 efi_pa_va_lookup(efi_guid_t *guid, u64 pa)
8585
}
8686
}
8787

88-
pr_warn("Failed to find VA for GUID: %pUL, PA: 0x%llx", guid, pa);
89-
9088
return 0;
9189
}
9290

@@ -154,13 +152,37 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end)
154152
guid_copy(&th->guid, (guid_t *)handler_info->handler_guid);
155153
th->handler_addr =
156154
(void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
155+
/*
156+
* Print a warning message if handler_addr is zero which is not expected to
157+
* ever happen.
158+
*/
159+
if (unlikely(!th->handler_addr))
160+
pr_warn("Failed to find VA of handler for GUID: %pUL, PA: 0x%llx",
161+
&th->guid, handler_info->handler_address);
157162

158163
th->static_data_buffer_addr =
159164
efi_pa_va_lookup(&th->guid, handler_info->static_data_buffer_address);
165+
/*
166+
* According to the PRM specification, static_data_buffer_address can be zero,
167+
* so avoid printing a warning message in that case. Otherwise, if the
168+
* return value of efi_pa_va_lookup() is zero, print the message.
169+
*/
170+
if (unlikely(!th->static_data_buffer_addr && handler_info->static_data_buffer_address))
171+
pr_warn("Failed to find VA of static data buffer for GUID: %pUL, PA: 0x%llx",
172+
&th->guid, handler_info->static_data_buffer_address);
160173

161174
th->acpi_param_buffer_addr =
162175
efi_pa_va_lookup(&th->guid, handler_info->acpi_param_buffer_address);
163176

177+
/*
178+
* According to the PRM specification, acpi_param_buffer_address can be zero,
179+
* so avoid printing a warning message in that case. Otherwise, if the
180+
* return value of efi_pa_va_lookup() is zero, print the message.
181+
*/
182+
if (unlikely(!th->acpi_param_buffer_addr && handler_info->acpi_param_buffer_address))
183+
pr_warn("Failed to find VA of acpi param buffer for GUID: %pUL, PA: 0x%llx",
184+
&th->guid, handler_info->acpi_param_buffer_address);
185+
164186
} while (++cur_handler < tm->handler_count && (handler_info = get_next_handler(handler_info)));
165187

166188
return 0;

drivers/acpi/x86/lpss.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,9 +387,6 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = {
387387
{ "INT3435", LPSS_ADDR(lpt_uart_dev_desc) },
388388
{ "INT3436", LPSS_ADDR(lpt_sdio_dev_desc) },
389389

390-
/* Wildcat Point LPSS devices */
391-
{ "INT3438", LPSS_ADDR(lpt_spi_dev_desc) },
392-
393390
{ }
394391
};
395392

drivers/thermal/intel/int340x_thermal/int3400_thermal.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,7 @@ static const struct acpi_device_id int3400_thermal_match[] = {
690690
{"INTC1068", 0},
691691
{"INTC10A0", 0},
692692
{"INTC10D4", 0},
693+
{"INTC10FC", 0},
693694
{}
694695
};
695696

0 commit comments

Comments
 (0)