On Tue, Mar 26, 2019 at 11:10:04AM -0500, minyard@acm.org wrote:
From: Corey Minyard cminyard@mvista.com
Backport from 41b766d661bf94a364960862cfc248a78313dbd3
When excuting a command like: modprobe ipmi_si ports=0xffc0e3 type=bt The system would get an oops.
The trouble here is that ipmi_si_hardcode_find_bmc() is called before ipmi_si_platform_init(), but initialization of the hard-coded device creates an IPMI platform device, which won't be initialized yet.
The real trouble is that hard-coded devices aren't created with any device, and the fixup is done later. So do it right, create the hard-coded devices as normal platform devices.
This required adding some new resource types to the IPMI platform code for passing information required by the hard-coded device and adding some code to remove the hard-coded platform devices on module removal.
To enforce the "hard-coded devices passed by the user take priority over firmware devices" rule, some special code was added to check and see if a hard-coded device already exists.
The backport required some minor fixups and adding the device id table that had been added in another change and was used in this one.
Reported-by: Yang Yingliang yangyingliang@huawei.com Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Corey Minyard cminyard@mvista.com Tested-by: Yang Yingliang yangyingliang@huawei.com
This backport is for 4.19, the backport from the main tree failed. Passes basic tests.
Queued for 4.19, thank you.
-- Thanks, Sasha