qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-4.0] hw/i386/pc: Fix crash when hot-plugging


From: Thomas Huth
Subject: Re: [Qemu-devel] [PATCH for-4.0] hw/i386/pc: Fix crash when hot-plugging nvdimm on older machine types
Date: Thu, 11 Apr 2019 06:50:38 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1

 Hi,

On 11/04/2019 03.56, Wei Yang wrote:
> On Mon, Apr 08, 2019 at 09:29:11PM +0000, Wei Yang wrote:
>>>>
>>>> Thomas,
>>>>
>>>> Thanks for pointing this out, while I have some different idea on how to 
>>>> fix
>>>> this.
>>>>
>>>> The reason of the core dump is errp already been set in
>>>> hotplug_handler_pre_plug(), and this function check acpi hotplug 
>>>> capability.
>>>> The order of this check is correct, while we should  return when errp is 
>>>> set
>>>> in hotplug_handler_pre_plug().
>>>>
>>>> I got a fix like this, which I have tested and looks good to me.
>>>>
>>>>
>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>> index 6077d27361..b11f3b15c1 100644
>>>> --- a/hw/i386/pc.c
>>>> +++ b/hw/i386/pc.c
>>>> @@ -2091,6 +2091,9 @@ static void pc_memory_pre_plug(HotplugHandler 
>>>> *hotplug_dev, DeviceState *dev,
>>>>      }
>>>>  
>>>>      hotplug_handler_pre_plug(pcms->acpi_dev, dev, errp);
>>>> +    if (*errp) {
>>>> +        return;
>>>> +    }
>>>
>>> Not sure, but I think you can not rely on the fact that the caller set
>>> *errp = NULL already... that's why it is more common to use a local_err
>>> variable and error_propagate() for such cases (which is what I did in my
>>> patch).
>>>
>>
>> Ok, that's fine for me.
>>
>>> Also, why don't you want the "nvdimm is not enabled: missing 'nvdimm' in
>>> '-M'" check to be done first?
>>>
>>
>> Because this function pc_memory_pre_plug() will be called not only when
>> nvdimm is hot-plugged but also dimm is hot-plugged. And
>> hotplug_handler_pre_plug() here is to check the acpi(if it has) hot-plug
>> capability.
>>
>> So the check in pc_memory_pre_plug() is from generic to specific: 
>>    1. Do we have capability to hot-plug?
>>    2. If the device is nvdimm, do we enabled nvdimm?
>>
> 
> Thomas
> 
> Do you think this is a reasonable explanation?

Fine for me, I don't mind either way as long as the crash is fixed. Feel
free to send a patch that restores the desired order.

 Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]