qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] KVM call minutes July 24th


From: Markus Armbruster
Subject: Re: [Qemu-devel] KVM call minutes July 24th
Date: Mon, 30 Jul 2012 17:46:23 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux)

Juan Quintela <address@hidden> writes:

> Hi
>
> Minutes of Today call.
>
> ahci: agraf
> ----
> - how to enable it?
>   * today is too difficult (alex)
>   * get it to work as everything else (markus)
>   And big discussion ensued. Markus & alex will reply with details.
>   No agreement, and too subtle for me to resume perfectly.
>   * cdrom still not working
> - dates for freeze? q35?
>   depends on what people does/review?
>
> Later, Juan.

Sorry for the delay.  Hope I still remember enough write a worthwhile
summary.  Alex, please correct me if I misrepresent you.


Background
----------

* -drive if=ide asks the board to connect this drive to its "IDE
  controller".  It's silently ignored if the board doesn't have one.
  Even if it has one, it may silently ignore some drives.

  Examples:

  - PIIX3 boards such as current "pc" connect all if=ide drives to
    controller "piix3-ide".  Bus numbers > 2 fail machine creation.

  - I expect the forthcoming "q35" board to connect all if=ide drives to
    controller "ich9-ahci".  We hope to upgrade "pc" to this board.

  - Board "r2d" connects the if=ide,index=0 drive to a non-qdevified
    controller hw/ide/mmio.c.  Any others get ignored.

  - Board "s390-virtio" connects some if=ide drives[*] to
    virtio-blk-s390.  Yes, that's not really an IDE controller.

  - Board "highbank" appears to have an ich9-ahci controller, but it
    doesn't seem to connect any if=ide drives to it.

* Likewise, -drive if=scsi asks the board to connect this drive to a
  SCSI controller.

  Examples:

  - PC boards create N+1 "lsi53c895a" controllers, where N is the
    largest bus number in any -drive if=scsi.  The controller
    auto-connects all if=scsi,bus=I drives for its own bus number I.
    Ugly as hell.

  - Board "pseries" works the same, except it creates "spapr-vscsi"
    controllers.

  - The various Sun4[cdm] boards create a single "esp" controller, for
    bus=0.  -drive if=scsi with any other bus fails machine
    initialization.

* The meaning of -hda, drive without if=, and so forth depends on the
  board, it's currently either like if=scsi or like if=ide.

* You can use -device to add additional controllers and drives.  For
  instance, if the board provides a PCI bus, then

      -device ich9-ahci,id=ahci0

  creates an ICH9 AHCI controller, and

      -drive if=none,id=drive0,...
      -device ide-hd,bus=ahci0.0,drive=drive0

  connects an IDE disk to it.

  
Alex's proposal
---------------

Alex wants more users for AHCI.  Using it with a board that doesn't
connect if=ide drives to an AHCI controller involves -device.  Alex
thinks that's too hard for users, and prevents adoption.

His proposed solution is to create a new interface type "ahci", so that
-drive if=ahci "just works".  It creates ich9-ahci controllers
automatically.


Critique
--------

* Does the use case "AHCI with a non-AHCI board" justify a new interface
  type?  Would anybody care if we had q35 today?  Would we regret adding
  if=ahci once we have q35?

* If the board already has an ich9-ahci, you can't use if=ahci in its
  current form to add drives to it.  if=ahci creates *additional*
  ich9-ahci controllers.

* Do we want a separate interface type for each (sufficiently popular)
  controller?  What about "megasas" when the board provides only
  "lsi53c895a"?  What shall we do when we acquire an ich10 device model?
  Where does that stop?

* Should -drive ever auto-create controllers?  if=scsi does, but it's
  ugly.

* A possible alternative: machine option to replace the controller to
  use for if=ide.  Also possible for if=scsi.

* Probably more I can't remember anymore.


[*] "Some drives": looks like the code attempts to connect up to ten,
but I'm not at all sure more than two work.



reply via email to

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