diff mbox series

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

Message ID 20190718091740.6834-1-philmd@redhat.com
State New
Headers show
Series [PATCH-for-4.1] hw/ide/piix: Mark the PIIX IDE interfaces as not user_creatable | expand

Commit Message

Philippe Mathieu-Daudé July 18, 2019, 9:17 a.m. UTC
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(+)

Comments

Paolo Bonzini July 18, 2019, 9:26 a.m. UTC | #1
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;
>  }
>  
>
Kevin Wolf July 18, 2019, 12:12 p.m. UTC | #2
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
John Snow July 19, 2019, 1:03 a.m. UTC | #3
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
diff mbox series

Patch

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;
 }