Skip to content

Commit b11e4cc

Browse files
committed
Add uas to the list of default modules
Introduce an idea of quirks for modaliases. Some modules do not report aliases they use. So we just add all registered modaliases to the booster image. Closes #121
1 parent 900e9d2 commit b11e4cc

File tree

2 files changed

+45
-29
lines changed

2 files changed

+45
-29
lines changed

Diff for: generator/generator.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ var defaultModulesList = []string{
7979
"kernel/drivers/hid/",
8080
"hid_generic", "sd_mod", "ahci",
8181
"sdhci", "sdhci_acpi", "sdhci_pci", "mmc_block", // mmc
82-
"nvme", "usb_storage",
82+
"nvme", "usb_storage", "uas",
8383
"virtio_pci", "virtio_blk", "virtio_scsi", "virtio_crypto",
8484
}
8585

Diff for: generator/kmod.go

+44-28
Original file line numberDiff line numberDiff line change
@@ -589,37 +589,59 @@ func (k *Kmod) filterAliasesForRequiredModules(conf *generatorConfig) ([]alias,
589589
}
590590
}
591591

592-
if !k.universal {
593-
devAliases, err := conf.readDeviceAliases() // list of current host aliases as reported by /sys/devices
592+
if k.universal {
593+
return filteredAliases, nil
594+
}
595+
596+
// for a non-universal mode filter out only aliases known to kernel
597+
uniqAliases := make(map[alias]bool)
598+
599+
devAliases, err := conf.readDeviceAliases() // list of current host aliases as reported by /sys/devices
600+
if err != nil {
601+
return nil, err
602+
}
603+
for a := range devAliases {
604+
matched, err := matchAlias(a, filteredAliases)
594605
if err != nil {
595606
return nil, err
596607
}
608+
if len(matched) == 0 {
609+
debug("no matches found for a device alias '%s'", a)
610+
continue
611+
}
597612

598-
// filter out only aliases known to kernel
599-
var newFilteredAliases []alias // aliases for the given devices
600-
uniqAliases := make(map[alias]bool)
601-
for a := range devAliases {
602-
matched, err := matchAlias(a, filteredAliases)
603-
if err != nil {
604-
return nil, err
605-
}
606-
if len(matched) == 0 {
607-
debug("no matches found for a device alias '%s'", a)
608-
continue
609-
}
613+
for _, m := range matched {
614+
uniqAliases[m] = true
615+
}
616+
}
610617

611-
for _, m := range matched {
612-
if _, exists := uniqAliases[m]; exists {
613-
continue
614-
}
615-
uniqAliases[m] = true
616-
newFilteredAliases = append(newFilteredAliases, m)
618+
// quirk: some modules do not report modaliases they use at /sysfs so we just add all aliases for specified modules.
619+
addAllAliasesForModules := []string{
620+
// mmc bus sends an udev event modalias 'mmc:block' (see Linux drivers/mmc/core/bus.c)
621+
// but it seems that this modalias is not reported anywhere under /sys/devices, see https://github.com/anatol/booster/issues/90
622+
"mmc_block",
623+
// uas does not report alias for its USB_PR_BULK interface https://github.com/anatol/booster/issues/121
624+
"uas",
625+
}
626+
for _, m := range addAllAliasesForModules {
627+
if !k.requiredModules[m] {
628+
continue
629+
}
630+
631+
for _, a := range filteredAliases {
632+
if a.module != m {
633+
continue
617634
}
635+
uniqAliases[a] = true
618636
}
619-
filteredAliases = newFilteredAliases
620637
}
621638

622-
return filteredAliases, nil
639+
newFilteredAliases := make([]alias, len(uniqAliases)) // aliases for the given devices
640+
for a, _ := range uniqAliases {
641+
newFilteredAliases = append(newFilteredAliases, a)
642+
}
643+
644+
return newFilteredAliases, nil
623645
}
624646

625647
func readDeviceAliases() (set, error) {
@@ -650,12 +672,6 @@ func readDeviceAliases() (set, error) {
650672
return nil
651673
})
652674

653-
// Buses might have associated modaliases e.g. mmc bus sends an udev event modalias 'mmc:block' (see Linux drivers/mmc/core/bus.c)
654-
// But it seems that this modalias is not reported anywhere under /sys/devices, see https://github.com/anatol/booster/issues/90
655-
656-
// insert implicit modaliases. TODO: find a more straightforward way to detect all buses modaliases
657-
aliases["mmc:block"] = true
658-
659675
return aliases, err
660676
}
661677

0 commit comments

Comments
 (0)