qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 205983: hw: Default -drive to if=ide explicit


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 205983: hw: Default -drive to if=ide explicitly where it w...
Date: Tue, 21 Feb 2017 07:15:09 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 2059839baa8fbc4390eddf462c601165485ffa8f
      
https://github.com/qemu/qemu/commit/2059839baa8fbc4390eddf462c601165485ffa8f
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/alpha/dp264.c
    M hw/arm/spitz.c
    M hw/arm/tosa.c
    M hw/i386/pc.c
    M hw/mips/mips_fulong2e.c
    M hw/mips/mips_malta.c
    M hw/mips/mips_r4k.c
    M hw/ppc/mac_newworld.c
    M hw/ppc/mac_oldworld.c
    M hw/ppc/prep.c
    M hw/sh4/r2d.c
    M hw/sparc64/sun4u.c

  Log Message:
  -----------
  hw: Default -drive to if=ide explicitly where it works

Block backends defined with -drive if=ide are meant to be picked up by
machine initialization code: a suitable frontend gets created and
wired up automatically.

if=ide drives not picked up that way can still be used with -device as
if they had if=none, but that's unclean and best avoided.  Unused ones
produce an "Orphaned drive without device" warning.

-drive parameter "if" is optional, and the default depends on the
machine type.  If a machine type doesn't specify a default, the
default is "ide".

Many machine types default to if=ide, even though they don't actually
have an IDE controller.  A future patch will change these defaults to
something more sensible.  To prepare for it, this patch makes default
"ide" explicit for the machines that actually pick up if=ide drives:

* alpha: clipper
* arm/aarch64: spitz borzoi terrier tosa
* i386/x86_64: generic-pc-machine (with concrete subtypes pc-q35-*
  pc-i440fx-* pc-* isapc xenfv)
* mips64el: fulong2e
* mips/mipsel/mips64el: malta mips
* ppc/ppc64: mac99 g3beige prep
* sh4/sh4eb: r2d
* sparc64: sun4u sun4v

Note that ppc64 machine powernv already sets an "ide" default
explicitly.  Its IDE controller isn't implemented, yet.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Message-Id: <address@hidden>


  Commit: e0319b030256cfd64c599b1bbac5b3df92ebafe4
      
https://github.com/qemu/qemu/commit/e0319b030256cfd64c599b1bbac5b3df92ebafe4
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/arm/cubieboard.c
    M hw/arm/xlnx-ep108.c

  Log Message:
  -----------
  hw/arm/cubieboard hw/arm/xlnx-ep108: Fix units_per_default_bus

Machine types cubieboard, xlnx-ep108, xlnx-zcu102 have an onboard AHCI
controller, but neglect to set their MachineClass member
units_per_default_bus = 1.  This permits -drive if=ide,unit=1, which
makes no sense for AHCI.  It also screws up index=N for odd N, because
it gets desugared to unit=1,bus=N/2

Doesn't really matter, because these machine types fail to honor
-drive if=ide.  Add the missing units_per_default_bus = 1 anyway,
along with a TODO comment on what needs to be done for -drive if=ide.

Also set block_default_type = IF_IDE explicitly.  It's currently the
default, but the next commit will change it to something more
sensible, and we want to keep the IF_IDE default for these three
machines.  See also the previous commit.

Cc: Beniamino Galvani <address@hidden>
Cc: Alistair Francis <address@hidden>
Cc: "Edgar E. Iglesias" <address@hidden>
Cc: Peter Maydell <address@hidden>
Cc: address@hidden
Signed-off-by: Markus Armbruster <address@hidden>
Acked-by: Alistair Francis <address@hidden>
Message-Id: <address@hidden>


  Commit: a27fa28f039771574176a1efe0733b3ba3c7c47c
      
https://github.com/qemu/qemu/commit/a27fa28f039771574176a1efe0733b3ba3c7c47c
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M include/sysemu/blockdev.h

  Log Message:
  -----------
  hw: Default -drive to if=none instead of ide when ide cannot work

Block backends defined with -drive if=ide are meant to be picked up by
machine initialization code: a suitable frontend gets created and
wired up automatically.

if=ide drives not picked up that way can still be used with -device as
if they had if=none, but that's unclean and best avoided.  Unused ones
produce an "Orphaned drive without device" warning.

-drive parameter "if" is optional, and the default depends on the
machine type.  If a machine type doesn't specify a default, the
default is "ide".

Many machine types implicitly default to if=ide that way, even though
they don't actually have an IDE controller.  This makes no sense.

Change the implicit default to if=none.  Affected machines:

* all targets: none
* aarch64/arm: akita ast2500 canon cheetah collie connex imx25
  integratorcp kzm lm3s6965evb lm3s811evb mainstone musicpal n800 n810
  netduino2 nuri palmetto realview romulus sabrelite smdkc210 sx1 sx1
  verdex z2
* cris: axis-dev88
* i386/x86_64: xenpv
* lm32: lm32-evr lm32-uclinux milkymist
* m68k: an5206 dummy mcf5208evb
* microblaze/microblazeel: petalogix-ml605 petalogix-s3adsp1800
* mips/mips64/mips64el/mipsel: mipssim
* moxie: moxiesim
* or32: or32-sim
* ppc/ppc64/ppcemb: bamboo ref405ep taihu virtex-ml507
* ppc/ppc64: mpc8544ds ppce500
* sh4/sh4eb: shix
* sparc: leon3_generic
* sparc64: niagara
* tricore: tricore_testboard
* unicore32: puv3
* xtensa/xtensaeb: kc705 lx200 lx60 ml605 sim

None of these machines have an IDE controller, let alone code to
honor if=ide.

Cc: Peter Maydell <address@hidden>
Cc: address@hidden
Cc: Edgar E. Iglesias <address@hidden>
Cc: Stefano Stabellini <address@hidden>
Cc: Anthony Perard <address@hidden>
Cc: address@hidden
Cc: Michael Walle <address@hidden>
Cc: Laurent Vivier <address@hidden>
Cc: Anthony Green <address@hidden>
Cc: Jia Liu <address@hidden>
Cc: Alexander Graf <address@hidden>
Cc: address@hidden
Cc: Magnus Damm <address@hidden>
Cc: Fabien Chouteau <address@hidden>
Cc: Mark Cave-Ayland <address@hidden>
Cc: Artyom Tarasenko <address@hidden>
Cc: Bastian Koppelmann <address@hidden>
Cc: Guan Xuetao <address@hidden>
Cc: Max Filippov <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Acked-By: Artyom Tarasenko <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Message-Id: <address@hidden>


  Commit: 7e465513c1c8a384003053eb8f8362039bbb7a2c
      
https://github.com/qemu/qemu/commit/7e465513c1c8a384003053eb8f8362039bbb7a2c
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/arm/realview.c
    M hw/arm/vexpress.c
    M hw/arm/xilinx_zynq.c

  Log Message:
  -----------
  hw: Default -drive to if=none instead of scsi when scsi cannot work

Block backends defined with -drive if=scsi are meant to be picked up
by machine initialization code: a suitable frontend gets created and
wired up automatically.

if=scsi drives not picked up that way can still be used with -device
as if they had if=none, but that's unclean and best avoided.  Unused
ones produce an "Orphaned drive without device" warning.

A few machine types default to if=scsi, even though they don't
actually have a SCSI HBA.  This makes no sense.  Change their default
to if=none.  Affected machines:

* aarch64/arm: realview-pbx-a9 vexpress-a9 vexpress-a15 xilinx-zynq-a9

Cc: Peter Maydell <address@hidden>
Cc: "Edgar E. Iglesias" <address@hidden>
Cc: Alistair Francis <address@hidden>
Cc: address@hidden
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Message-Id: <address@hidden>


  Commit: 2a7ae4ee50002a2fb5ac67fc8c32cc9009335cd8
      
https://github.com/qemu/qemu/commit/2a7ae4ee50002a2fb5ac67fc8c32cc9009335cd8
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/arm/highbank.c

  Log Message:
  -----------
  hw/arm/highbank: Default -drive to if=ide instead of if=scsi

These machines have no onboard SCSI HBA, and no way to plug one.
-drive if=scsi therefore cannot work.  They do have an onboard IDE
controller (sysbus-ahci), but fail to honor if=ide.

Change their default to if=ide, and add a TODO comment on what needs
to be done to actually honor -drive if=ide.

Cc: Rob Herring <address@hidden>
Cc: Peter Maydell <address@hidden>
Cc: address@hidden
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Message-Id: <address@hidden>


  Commit: 664cc623bfe161759eabd263a1bf7668895b9e4a
      
https://github.com/qemu/qemu/commit/664cc623bfe161759eabd263a1bf7668895b9e4a
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev: Improve message for orphaned -drive

We warn when a -drive isn't supported by the machine type (commit
a66c9dc):

    $ qemu-system-x86_64 -S -display none -drive if=mtd
    Warning: Orphaned drive without device: id=mtd0,file=,if=mtd,bus=0,unit=0

Improve this to point to the offending bit of configuration:

    qemu-system-x86_64: -drive if=mtd: warning: machine type does not support 
if=mtd,bus=0,unit=0

Especially nice when it's hidden behind -readconfig foo.cfg:

    qemu-system-x86_64:foo.cfg:140: warning: machine type does not support 
if=mtd,bus=0,unit=0

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: John Snow <address@hidden>


  Commit: 720b8dc052ae2783d9b8cc2263eccc5bcec04418
      
https://github.com/qemu/qemu/commit/720b8dc052ae2783d9b8cc2263eccc5bcec04418
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M blockdev.c
    M include/sysemu/blockdev.h

  Log Message:
  -----------
  blockdev: Make orphaned -drive fatal

Block backends defined with "-drive if=T" with T other than "none" are
meant to be picked up by machine initialization code: a suitable
frontend gets created and wired up automatically.

If machine initialization code doesn't comply, the block backend
remains unused.  This triggers a warning since commit a66c9dc, v2.2.0.
Drives created by default are exempted; use -nodefaults to get rid of
them.

Turn this warning into an error.

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: John Snow <address@hidden>


  Commit: 8f2d75e81d5eb2715be653010258ce9d57549de7
      
https://github.com/qemu/qemu/commit/8f2d75e81d5eb2715be653010258ce9d57549de7
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/ide/core.c
    M hw/mips/mips_jazz.c
    M hw/sparc/sun4m.c

  Log Message:
  -----------
  hw: Drop superfluous special checks for orphaned -drive

We've traditionally rejected orphans here and there, but not
systematically.  For instance, the sun4m machines have an onboard SCSI
HBA (bus=0), and have always rejected bus>0.  Other machines with an
onboard SCSI HBA don't.

Commit a66c9dc made all orphans trigger a warning, and the previous
commit turned this into an error.  The checks "here and there" are now
redundant.  Drop them.

Note that the one in mips_jazz.c was wrong: it rejected bus > MAX_FD,
but MAX_FD is the number of floppy drives per bus.

Error messages change from

    $ qemu-system-x86_64 -drive if=ide,bus=2
    qemu-system-x86_64: Too many IDE buses defined (3 > 2)
    $ qemu-system-mips64 -M magnum,accel=qtest -drive if=floppy,bus=2,id=fd1
    qemu: too many floppy drives
    $ qemu-system-sparc -M LX -drive if=scsi,bus=1
    qemu: too many SCSI bus

to

    $ qemu-system-x86_64 -drive if=ide,bus=2
    qemu-system-x86_64: -drive if=ide,bus=2: machine type does not support 
if=ide,bus=2,unit=0
    $ qemu-system-mips64 -M magnum,accel=qtest -drive if=floppy,bus=2,id=fd1
    qemu-system-mips64: -drive if=floppy,bus=2,id=fd1: machine type does not 
support if=floppy,bus=2,unit=0
    $ qemu-system-sparc -M LX -drive if=scsi,bus=1
    qemu-system-sparc: -drive if=scsi,bus=1: machine type does not support 
if=scsi,bus=1,unit=0

Cc: John Snow <address@hidden>
Cc: "Hervé Poussineau" <address@hidden>
Cc: Mark Cave-Ayland <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: John Snow <address@hidden>


  Commit: fb8b660e1718aaa77cccbda67af5727bb4a6250f
      
https://github.com/qemu/qemu/commit/fb8b660e1718aaa77cccbda67af5727bb4a6250f
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/scsi/esp-pci.c
    M hw/scsi/esp.c
    M hw/scsi/lsi53c895a.c
    M hw/scsi/megasas.c
    M hw/scsi/mptsas.c
    M hw/scsi/scsi-bus.c
    M hw/scsi/spapr_vscsi.c
    M hw/scsi/virtio-scsi.c
    M include/hw/scsi/scsi.h
    M vl.c

  Log Message:
  -----------
  hw/scsi: Concentrate -drive if=scsi auto-create in one place

The logic to create frontends for -drive if=scsi is in SCSI HBAs.  For
all other interface types, it's in machine initialization code.

A few machine types create the SCSI HBAs necessary for that.  That's
also not done for other interface types.

I'm going to deprecate these SCSI eccentricities.  In preparation for
that, create the frontends in main() instead of the SCSI HBAs, by
calling new function scsi_legacy_handle_cmdline() there.

Note that not all SCSI HBAs create frontends.  Take care not to change
that.

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Acked-By: Paolo Bonzini <address@hidden>


  Commit: a64aa5785d5d26878d0a80ce64625b61be8fde60
      
https://github.com/qemu/qemu/commit/a64aa5785d5d26878d0a80ce64625b61be8fde60
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/arm/realview.c
    M hw/arm/versatilepb.c
    M hw/i386/pc.c
    M hw/scsi/lsi53c895a.c
    M hw/scsi/scsi-bus.c
    M hw/scsi/spapr_vscsi.c
    M include/hw/pci/pci.h
    M include/hw/scsi/scsi.h
    M vl.c

  Log Message:
  -----------
  hw: Deprecate -drive if=scsi with non-onboard HBAs

Block backends defined with "-drive if=T" with T other than "none" are
meant to be picked up by machine initialization code: a suitable
frontend gets created and wired up automatically.

Drives defined with if=scsi are also picked up by SCSI HBAs added with
-device, unlike other interface types.  Deprecate this usage, as follows.

Create the frontends for onboard HBAs in machine initialization code,
exactly like we do for if=ide and other interface types.  Change
scsi_legacy_handle_cmdline() to create a frontend only when it's still
missing, and warn that this usage is deprecated.

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>


  Commit: f778a82f0c179634892ea716970d4d35264dc841
      
https://github.com/qemu/qemu/commit/f778a82f0c179634892ea716970d4d35264dc841
  Author: Markus Armbruster <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M hw/i386/pc.c
    M qemu-options.hx
    M tests/qemu-iotests/051.pc.out

  Log Message:
  -----------
  hw/i386: Deprecate -drive if=scsi with PC machine types

The PC machines (pc-q35-* pc-i440fx-* pc-* isapc xenfv) automatically
create lsi53c895a SCSI HBAs and SCSI devices to honor -drive if=scsi.
For giggles, try -drive if=scsi,bus=25,media=cdrom --- this makes QEMU
create 25 of them.

lsi53c895a is thoroughly obsolete (PCI Ultra2 SCSI, ca. 2000), and
currently has no maintainer in QEMU.  megasas is a better choice,
except with old OSes that lack drivers.  virtio-scsi is a much better
choice when you have a driver, but only (newish) Linux comes with one
in the box.  There is no good default that works for all guests.

Encourage users to pick a non-obsolete SCSI HBA that works for them by
deprecating -drive if=scsi.

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Acked-By: Paolo Bonzini <address@hidden>


  Commit: a1cf5fac2b929ffa2abd1285401f2535ff8c6fea
      
https://github.com/qemu/qemu/commit/a1cf5fac2b929ffa2abd1285401f2535ff8c6fea
  Author: Peter Maydell <address@hidden>
  Date:   2017-02-21 (Tue, 21 Feb 2017)

  Changed paths:
    M blockdev.c
    M hw/alpha/dp264.c
    M hw/arm/cubieboard.c
    M hw/arm/highbank.c
    M hw/arm/realview.c
    M hw/arm/spitz.c
    M hw/arm/tosa.c
    M hw/arm/versatilepb.c
    M hw/arm/vexpress.c
    M hw/arm/xilinx_zynq.c
    M hw/arm/xlnx-ep108.c
    M hw/i386/pc.c
    M hw/ide/core.c
    M hw/mips/mips_fulong2e.c
    M hw/mips/mips_jazz.c
    M hw/mips/mips_malta.c
    M hw/mips/mips_r4k.c
    M hw/ppc/mac_newworld.c
    M hw/ppc/mac_oldworld.c
    M hw/ppc/prep.c
    M hw/scsi/esp-pci.c
    M hw/scsi/esp.c
    M hw/scsi/lsi53c895a.c
    M hw/scsi/megasas.c
    M hw/scsi/mptsas.c
    M hw/scsi/scsi-bus.c
    M hw/scsi/spapr_vscsi.c
    M hw/scsi/virtio-scsi.c
    M hw/sh4/r2d.c
    M hw/sparc/sun4m.c
    M hw/sparc64/sun4u.c
    M include/hw/pci/pci.h
    M include/hw/scsi/scsi.h
    M include/sysemu/blockdev.h
    M qemu-options.hx
    M tests/qemu-iotests/051.pc.out
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/armbru/tags/pull-block-2017-02-21' into 
staging

Changes to -drive without if= and with if=scsi

# gpg: Signature made Tue 21 Feb 2017 12:22:35 GMT
# gpg:                using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <address@hidden>"
# gpg:                 aka "Markus Armbruster <address@hidden>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-block-2017-02-21:
  hw/i386: Deprecate -drive if=scsi with PC machine types
  hw: Deprecate -drive if=scsi with non-onboard HBAs
  hw/scsi: Concentrate -drive if=scsi auto-create in one place
  hw: Drop superfluous special checks for orphaned -drive
  blockdev: Make orphaned -drive fatal
  blockdev: Improve message for orphaned -drive
  hw/arm/highbank: Default -drive to if=ide instead of if=scsi
  hw: Default -drive to if=none instead of scsi when scsi cannot work
  hw: Default -drive to if=none instead of ide when ide cannot work
  hw/arm/cubieboard hw/arm/xlnx-ep108: Fix units_per_default_bus
  hw: Default -drive to if=ide explicitly where it works

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/a0775e28cd6c...a1cf5fac2b92

reply via email to

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