Peter Maydell <peter.mayd...@linaro.org> writes: > On 16 August 2012 15:11, Markus Armbruster <arm...@redhat.com> wrote: >> Peter Maydell <peter.mayd...@linaro.org> writes: >>> As suggested in the recent discussion on Markus' patchset to suppress >>> unused default drives, this patchset cleans up the omap and pxa2xx >>> SD card controllers to behave like the other controllers: >>> * the init function looks for the next IF_SD drive >>> * if there isn't one, we start up as a controller with no card >>> present > >> Isn't this an incompatible change? Before, you get an SD card reader >> backed by an empty BDS default. You can load/unload cards in the >> monitor. After, you get an SD card reader that isn't backed by a BDS by >> default. Device models prepared for that can treat it as permanently >> empty. > > Hmm, yes, but most of our SD controllers already act that way. > We should probably fix them all... > > So what's the block layer equivalent of drive_get_next() that always > returns us something we can get a bdrv from?
I figure you need a variant of drive_get(type, bus, unit) that creates and returns a default drive instead of null when 1. the user didn't suppress default drives with -nodefaults, and 2. (type, index) are (IF_FLOPPY, 0), (use_scsi ? IF_SCSI : IF_IDE, 2), or (IF_SD, 0), where index satisfies drive_index_to_bus_id(type, index) == bus and drive_index_to_unit_id(type, index) == unit. Happy coding :) PS: I hate drive_get_next(), because it makes which device model gets which drive depend on initialization order.