[Qemu-devel] [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable

Philippe Mathieu-Daudé posted 1 patch 4 years, 9 months ago
Test asan passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test checkpatch passed
Test s390x passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190718091740.6834-1-philmd@redhat.com
Maintainers: John Snow <jsnow@redhat.com>
hw/ide/piix.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable
Posted by Philippe Mathieu-Daudé 4 years, 9 months ago
The 'piix3-ide' (and 'piix3-ide-xen') devices are part of the
PIIX3 chipset modelled as TYPE_PIIX3_PCI_DEVICE (respectivelly
TYPE_PIIX3_XEN_DEVICE). The PIIX3 chipset can not be created
in part, it has to be created and used as a whole.

Similarly with the 'piix4-ide' device and the PIIX4 chipset
modelled as TYPE_PIIX4_PCI_DEVICE.

Disable the 'user_creatable' flag.

part of TYPE_PIIX3_PCI_DEVICE (TYPE_PIIX3_XEN_DEVICE)

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/ide/piix.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index b97e555072..c02e768668 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -253,6 +253,7 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data)
     k->device_id = PCI_DEVICE_ID_INTEL_82371SB_1;
     k->class_id = PCI_CLASS_STORAGE_IDE;
     set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
+    dc->user_creatable = false;
     dc->hotpluggable = false;
 }
 
@@ -279,6 +280,7 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data)
     k->device_id = PCI_DEVICE_ID_INTEL_82371AB;
     k->class_id = PCI_CLASS_STORAGE_IDE;
     set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
+    dc->user_creatable = false;
     dc->hotpluggable = false;
 }
 
-- 
2.20.1


Re: [Qemu-devel] [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable
Posted by Paolo Bonzini 4 years, 9 months ago
On 18/07/19 11:17, Philippe Mathieu-Daudé wrote:
> The 'piix3-ide' (and 'piix3-ide-xen') devices are part of the
> PIIX3 chipset modelled as TYPE_PIIX3_PCI_DEVICE (respectivelly
> TYPE_PIIX3_XEN_DEVICE). The PIIX3 chipset can not be created
> in part, it has to be created and used as a whole.
> 
> Similarly with the 'piix4-ide' device and the PIIX4 chipset
> modelled as TYPE_PIIX4_PCI_DEVICE.
> 
> Disable the 'user_creatable' flag.
> 
> part of TYPE_PIIX3_PCI_DEVICE (TYPE_PIIX3_XEN_DEVICE)
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

This works though:

  qemu-system-x86_64 \
    -M q35,sata=off -device piix3-ide,addr=1f.2 \
    -drive if=none,file=freedos.raw,id=hd -device ide-hd,drive=hd

And it is a nice hack to mimic Q35's legacy IDE mode...

Paolo


> ---
>  hw/ide/piix.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/hw/ide/piix.c b/hw/ide/piix.c
> index b97e555072..c02e768668 100644
> --- a/hw/ide/piix.c
> +++ b/hw/ide/piix.c
> @@ -253,6 +253,7 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data)
>      k->device_id = PCI_DEVICE_ID_INTEL_82371SB_1;
>      k->class_id = PCI_CLASS_STORAGE_IDE;
>      set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
> +    dc->user_creatable = false;
>      dc->hotpluggable = false;
>  }
>  
> @@ -279,6 +280,7 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data)
>      k->device_id = PCI_DEVICE_ID_INTEL_82371AB;
>      k->class_id = PCI_CLASS_STORAGE_IDE;
>      set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
> +    dc->user_creatable = false;
>      dc->hotpluggable = false;
>  }
>  
> 


Re: [Qemu-devel] [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable
Posted by John Snow 4 years, 9 months ago

On 7/18/19 5:26 AM, Paolo Bonzini wrote:
> On 18/07/19 11:17, Philippe Mathieu-Daudé wrote:
>> The 'piix3-ide' (and 'piix3-ide-xen') devices are part of the
>> PIIX3 chipset modelled as TYPE_PIIX3_PCI_DEVICE (respectivelly
>> TYPE_PIIX3_XEN_DEVICE). The PIIX3 chipset can not be created
>> in part, it has to be created and used as a whole.
>>
>> Similarly with the 'piix4-ide' device and the PIIX4 chipset
>> modelled as TYPE_PIIX4_PCI_DEVICE.
>>
>> Disable the 'user_creatable' flag.
>>
>> part of TYPE_PIIX3_PCI_DEVICE (TYPE_PIIX3_XEN_DEVICE)
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> This works though:
> 
>   qemu-system-x86_64 \
>     -M q35,sata=off -device piix3-ide,addr=1f.2 \
>     -drive if=none,file=freedos.raw,id=hd -device ide-hd,drive=hd
> 
> And it is a nice hack to mimic Q35's legacy IDE mode...
> 
> Paolo
> 

Right. I never modeled the "right" way to do legacy IDE because I think
it would involve some deeper surgery to the IDE code, and it was hard to
justify the time spent.

Why do we want to disable these devices, exactly?

--js

Re: [Qemu-devel] [Qemu-block] [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable
Posted by Kevin Wolf 4 years, 9 months ago
Am 18.07.2019 um 11:26 hat Paolo Bonzini geschrieben:
> On 18/07/19 11:17, Philippe Mathieu-Daudé wrote:
> > The 'piix3-ide' (and 'piix3-ide-xen') devices are part of the
> > PIIX3 chipset modelled as TYPE_PIIX3_PCI_DEVICE (respectivelly
> > TYPE_PIIX3_XEN_DEVICE). The PIIX3 chipset can not be created
> > in part, it has to be created and used as a whole.
> > 
> > Similarly with the 'piix4-ide' device and the PIIX4 chipset
> > modelled as TYPE_PIIX4_PCI_DEVICE.
> > 
> > Disable the 'user_creatable' flag.
> > 
> > part of TYPE_PIIX3_PCI_DEVICE (TYPE_PIIX3_XEN_DEVICE)
> > 
> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
> This works though:
> 
>   qemu-system-x86_64 \
>     -M q35,sata=off -device piix3-ide,addr=1f.2 \
>     -drive if=none,file=freedos.raw,id=hd -device ide-hd,drive=hd
> 
> And it is a nice hack to mimic Q35's legacy IDE mode...

And I've seen it often enough that I'm sure users are using it.

If we want to remove it at all, we'd have to go through the usual
deprecation period. But as long as we don't have another option for
getting a legacy IDE controller on Q35, I don't think we should remove
this.

Kevin