diff -urNp linux-900/drivers/usb/hcd/ehci-hcd.c linux-1000/drivers/usb/hcd/ehci-hcd.c --- linux-900/drivers/usb/hcd/ehci-hcd.c +++ linux-1000/drivers/usb/hcd/ehci-hcd.c @@ -999,8 +999,11 @@ MODULE_DESCRIPTION (DRIVER_INFO); MODULE_AUTHOR (DRIVER_AUTHOR); MODULE_LICENSE ("GPL"); +extern int disable_all_usb; static int __init init (void) { + if (disable_all_usb) + return -ENODEV; dbg (DRIVER_INFO); dbg ("block sizes: qh %Zd qtd %Zd itd %Zd sitd %Zd", sizeof (struct ehci_qh), sizeof (struct ehci_qtd), diff -urNp linux-900/drivers/usb/uhci.c linux-1000/drivers/usb/uhci.c --- linux-900/drivers/usb/uhci.c +++ linux-1000/drivers/usb/uhci.c @@ -3099,10 +3099,14 @@ static struct pci_driver uhci_pci_driver #endif /* PM */ }; +extern int disable_all_usb; static int __init uhci_hcd_init(void) { int retval = -ENOMEM; + + if (disable_all_usb) + return -ENODEV; info(DRIVER_DESC " " DRIVER_VERSION); diff -urNp linux-900/drivers/usb/usb-ohci.c linux-1000/drivers/usb/usb-ohci.c --- linux-900/drivers/usb/usb-ohci.c +++ linux-1000/drivers/usb/usb-ohci.c @@ -2919,9 +2919,12 @@ static struct pci_driver ohci_pci_driver /*-------------------------------------------------------------------------*/ +extern int disable_all_usb; static int __init ohci_hcd_init (void) { + if (disable_all_usb) + return -ENODEV; return pci_module_init (&ohci_pci_driver); } diff -urNp linux-900/drivers/usb/usb-uhci.c linux-1000/drivers/usb/usb-uhci.c --- linux-900/drivers/usb/usb-uhci.c +++ linux-1000/drivers/usb/usb-uhci.c @@ -3091,10 +3091,14 @@ static struct pci_driver uhci_pci_driver }; /*-------------------------------------------------------------------------*/ +extern int disable_all_usb; static int __init uhci_hcd_init (void) { int retval; + + if (disable_all_usb) + return -ENODEV; #ifdef DEBUG_SLAB urb_priv_kmem = kmem_cache_create("urb_priv", sizeof(urb_priv_t), 0, SLAB_HWCACHE_ALIGN, NULL, NULL); diff -urNp linux-900/init/main.c linux-1000/init/main.c --- linux-900/init/main.c +++ linux-1000/init/main.c @@ -132,6 +132,15 @@ static int __init profile_setup(char *st __setup("profile=", profile_setup); +int disable_all_usb = 0; +static int __init no_usb(char * s) +{ + disable_all_usb = 1; + return 1; +} +__setup("nousb", no_usb); + + static int __init checksetup(char *line) { struct kernel_param *p; diff -urNp linux-900/kernel/ksyms.c linux-1000/kernel/ksyms.c --- linux-900/kernel/ksyms.c +++ linux-1000/kernel/ksyms.c @@ -529,6 +529,8 @@ EXPORT_SYMBOL(seq_open); EXPORT_SYMBOL(seq_release); EXPORT_SYMBOL(seq_read); EXPORT_SYMBOL(seq_lseek); +extern int disable_all_usb; +EXPORT_SYMBOL(disable_all_usb); /* Program loader interfaces */ EXPORT_SYMBOL(setup_arg_pages);