[SeaBIOS] [patch] sdcard: skip detection of PCI sdhci controllers if etc/sdcard used

Kevin O'Connor kevin at koconnor.net
Thu Mar 10 16:03:26 CET 2016


On Thu, Mar 10, 2016 at 12:38:14AM -0600, Matt DeVillier wrote:
> Some BayTrail ChromeOS devices have the eMMC controller hidden (thus
> requiring the use of etc/sdcard), while others do not, making it problematic
> to have a single payload which serves all devices properly.  Therefore, if
> the CBFS contains etc/sdcard entries, skip detection of any visible PCI
> sdhci controllers in order to avoid duplicate entries in the boot menu.

John, would disabling PCI scans for sd controllers when any etc/sdcard
files exist work okay for the machines you've tested with?

[...]
> diff --git a/src/hw/sdcard.c b/src/hw/sdcard.c
> index 7e0875f..32cdb14 100644
> --- a/src/hw/sdcard.c
> +++ b/src/hw/sdcard.c
> @@ -557,11 +557,14 @@ sdcard_setup(void)
>          run_thread(sdcard_romfile_setup, file);
>      }
> 
> -    struct pci_device *pci;
> -    foreachpci(pci) {
> -        if (pci->class != PCI_CLASS_SYSTEM_SDHCI || pci->prog_if >= 2)
> -            // Not an SDHCI controller following SDHCI spec
> -            continue;
> -        run_thread(sdcard_pci_setup, pci);
> +    //only scan for PCI controllers if etc/sdcard* not used
> +    if (file == NULL) {

Unless I've missed something, this test (file==NULL) is always true
here.  Maybe add a counter or flag in the romfile search loop.

-Kevin

> +        struct pci_device *pci;
> +        foreachpci(pci) {
> +            if (pci->class != PCI_CLASS_SYSTEM_SDHCI || pci->prog_if >= 2)
> +                // Not an SDHCI controller following SDHCI spec
> +                continue;
> +            run_thread(sdcard_pci_setup, pci);
> +        }
>      }
>  }



More information about the SeaBIOS mailing list