Skip to content
Snippets Groups Projects
Forked from Reform / reform-boundary-uboot
Source project has a limited visibility.
  • Simon Glass's avatar
    e48eeb9e
    dm: blk: Improve block device claiming · e48eeb9e
    Simon Glass authored
    
    The intention with block devices is that the device number (devnum field
    in its descriptor) matches the alias of its parent device. For example,
    with:
    
    	aliases {
    		mmc0 = "/sdhci@700b0600";
    		mmc1 = "/sdhci@700b0400";
    	}
    
    we expect that the block devices for mmc0 and mmc1 would have device
    numbers of 0 and 1 respectively.
    
    Unfortunately this does not currently always happen. If there is another
    MMC device earlier in the driver model data structures its block device
    will be created first. It will therefore get device number 0 and mmc0
    will therefore miss out. In this case the MMC device will have sequence
    number 0 but its block device will not.
    
    To avoid this, allow a device to request a device number and bump any
    existing device number that is using it. This all happens during the
    binding phase so it is safe to change these numbers around. This allows
    device numbers to match the aliases in all circumstances.
    
    Add a test to verify the behaviour.
    
    Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
    e48eeb9e
    History
    dm: blk: Improve block device claiming
    Simon Glass authored
    
    The intention with block devices is that the device number (devnum field
    in its descriptor) matches the alias of its parent device. For example,
    with:
    
    	aliases {
    		mmc0 = "/sdhci@700b0600";
    		mmc1 = "/sdhci@700b0400";
    	}
    
    we expect that the block devices for mmc0 and mmc1 would have device
    numbers of 0 and 1 respectively.
    
    Unfortunately this does not currently always happen. If there is another
    MMC device earlier in the driver model data structures its block device
    will be created first. It will therefore get device number 0 and mmc0
    will therefore miss out. In this case the MMC device will have sequence
    number 0 but its block device will not.
    
    To avoid this, allow a device to request a device number and bump any
    existing device number that is using it. This all happens during the
    binding phase so it is safe to change these numbers around. This allows
    device numbers to match the aliases in all circumstances.
    
    Add a test to verify the behaviour.
    
    Signed-off-by: default avatarSimon Glass <sjg@chromium.org>