Bug 155271
Summary: | intel_sst_acpi 808622A8:00: No matching machine driver found | ||
---|---|---|---|
Product: | Drivers | Reporter: | tagorereddy (tagore.chandan) |
Component: | Other | Assignee: | drivers_other |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | jahn |
Priority: | P1 | ||
Hardware: | Intel | ||
OS: | Linux | ||
Kernel Version: | 4.8.0 -rc3 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
DMESG
dmesg4.10 |
Description
tagorereddy
2016-08-29 10:56:53 UTC
Created attachment 231571 [details]
DMESG
Alright! After going through the source code and poking around a bit, i found that the problem is with From file sound/soc/intel/common/sst-match-acpi.c: struct sst_acpi_mach *sst_acpi_find_machine(struct sst_acpi_mach *machines) { struct sst_acpi_mach *mach; bool found = false; for (mach = machines; mach->id[0]; mach++) { if (ACPI_SUCCESS(acpi_get_devices(mach->id, sst_acpi_mach_match, &found, NULL)) && found) return mach; } return NULL; } Observation: acpi_get_devices() is always reporting FAILURE status. But the device is available on the HID. I bypassed the function by disregarding the function return and the device starts to initialize only to be later tripped by const char *sst_acpi_find_name_from_hid(const u8 hid[ACPI_ID_LEN]) { const char *name = NULL; acpi_status status; status = acpi_get_devices(hid, sst_acpi_find_name, NULL, (void **)&name); if (ACPI_FAILURE(status) || name[0] == '\0') return NULL; return name; } Again acpi_get_devices() reports FAILURE status. At this point I'm stuck as to why this is happening. From file drivers/acpi/acpia/nsxfeval.c acpi_status acpi_get_devices(const char *HID, acpi_walk_callback user_function, void *context, void **return_value) { acpi_status status; struct acpi_get_devices_info info; ACPI_FUNCTION_TRACE(acpi_get_devices); /* Parameter validation */ if (!user_function) { return_ACPI_STATUS(AE_BAD_PARAMETER); } /* * We're going to call their callback from OUR callback, so we need * to know what it is, and their context parameter. */ info.hid = HID; info.context = context; info.user_function = user_function; /* * Lock the namespace around the walk. * The namespace will be unlocked/locked around each call * to the user function - since this function * must be allowed to make Acpi calls itself. */ status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); if (ACPI_FAILURE(status)) { return_ACPI_STATUS(status); } status = acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, acpi_ns_get_device_callback, NULL, &info, return_value); (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); return_ACPI_STATUS(status); } Could the tripping be because of the mutex ACPI_MTX_NAMESPACE not being acquired? Don't know if this is of any relavance, I've attached DMESG in which it could be seen that there was a PUNIT semaphore timeout and bus ownership couldn't be acquired. I don't know how to proceed. Could someone assist? Created attachment 248891 [details] dmesg4.10 Hi, i'm using odys vario pro 12, ive patched some bugs, like the semaphore bug and so on, but this still seems a problem here, because i get the same error in dmesg and have no sound :( Using 4.10-git with patches from https://bugzilla.kernel.org/show_bug.cgi?id=155241 Please help, no sound really sucks :/ *** This bug has been marked as a duplicate of bug 156191 *** |