Anthony Liguori <anth...@codemonkey.ws> writes:

> On Tue, Oct 15, 2013 at 7:41 AM, Kevin Wolf <kw...@redhat.com> wrote:
>> Am 15.10.2013 um 15:31 hat Andreas Färber geschrieben:
>>> Am 15.10.2013 15:21, schrieb Markus Armbruster:
>>> > Andreas,
>>> >
>>> > To go beyond RFC with this series, I need to explain why the IDE
>>> > controller functions of southbridges piix3-ide, piix3-ide-xen, piix4-ide
>>> > and via-ide cannot_instantiate_with_device_add_yet, or drop that.  I'd
>>> > appreciate your help.
>>> >
>>> > Our modelling of PCI devices is weird, to put it politely.  One of many
>>> > weird things is that we don't distinguish between a function and a
>>> > complete device: our "function models" are actually PCI device models,
>>> > and can be used as such, even though they only exist as functions of a
>>> > multifunction device in the real world.  We permit collecting aribitrary
>>> > PCI devices into multifunction devices.
>>> >
>>> > One instance of multifunction PCI devices are southbridges.  For
>>> > example, the ICH9 southbridge's PCI device 00:1F consists of ISA bridge
>>> > ("ICH9 LPC"), IDE controller ("ich9-ahci"), SMB controller ("ICH9 SMB"),
>>> > and Thermal Subsystem (which we don't implement).  The PIIX3 southbridge
>>> > consists of ISA bridge ("PIIX3", IDE controller ("piix3-ide"), USB
>>> > controller ("piix3-usb-uhci", can be suppressed), and SMB controller
>>> > ("PIIX4_PM", can be suppressed).
>>> >
>>> > Some functions of southbridges still need to be wired up in code ("ICH9
>>> > LPC", "ICH9 SMB", "PIIX4_PM", "PIIX4", "PIIX3", "PIIX3-xen", see PATCH
>>> > 5-6/9), thus cannot_instantiate_with_device_add_yet.
>>> >
>>> > The IDE controller functions have always been
>>> > cannot_instantiate_with_device_add_yet, but it's not obvious to me why.
>>> >
>>> > The other functions are available with device-add.  Users device-add'ing
>>> > them would of course be odd, but if it works...  I don't actually know
>>> > whether it works for all of them.
>>> >
>>> > Should all southbridge functions be made unavailable with device-add for
>>> > consistency, at least for now?
>>> >
>>> > Or should all functions be made available, except for the ones that
>>> > cannot possibly work with device-add?
>>> >
>>> > If the latter, can you think of any specific reason why the IDE
>>> > controllers couldn't work?
>>>
>>> I would've thought you and Kevin know more about IDE than me. ;)
>>> No idea why it is how it is.
>>>
>>> Two aspects:
>>> 1) PCI devices/functions can technically be hotplugged.
>>> 2) Drivers might not expect such devices to be hot-added/removed.
>>>
>>> I would tend for the latter proposal.
>>
>> I'm not sure how IDE hardware really works, but I don't think you can
>> handle it as a pure PCI device. On PCs, the IDE controller still provides
>> the good old IDE registers on the I/O ports that were already used in
>> ISA times, and they are not described in any BARs, for example.
>
> Legacy IDE and VGA accesses are positively decoded in the i440fx and
> dispatched to the first PCI device with the appropriate class code.
>
>> From a
>> software point of view, the PCI device is just for configuring Busmaster
>> DMA. Perhaps in reality it should be two devices, one for DMA on the PCI
>> bus and another one for the core on sysbus or ISA?
>
> It's definitely all a PCI device.  It could realistically be a
> discrete device too that's plugged into a PCI bus that lacks a super
> I/O chipset.
>
>>
>> Anyway, having two IDE controllers using the same I/O ports won't work,
>> obviously. So if you would allow -device or device-add for them, you'd
>> need options to configure the ports at least.
>
> It's allowed but the PCI bus will only route the legacy requests to one of 
> them.

Any objections to dropping cannot_instantiate_with_device_add_yet from
all IDE controller southbridge functions?  These are: piix3-ide,
piix3-ide-xen, piix4-ide and via-ide.

Reply via email to