diff -urN linux-2.4.22.org/drivers/usb/host/ehci-hcd.c linux-2.4.22/drivers/usb/host/ehci-hcd.c --- linux-2.4.22.org/drivers/usb/host/ehci-hcd.c 2003-11-21 19:50:57.000000000 +0100 +++ linux-2.4.22/drivers/usb/host/ehci-hcd.c 2003-11-21 19:59:22.000000000 +0100 @@ -1041,8 +1041,11 @@ MODULE_AUTHOR (DRIVER_AUTHOR); MODULE_LICENSE ("GPL"); +extern int disable_all_usb; static int __init init (void) { + if (disable_all_usb) + return -ENODEV; pr_debug ("%s: block sizes: qh %Zd qtd %Zd itd %Zd sitd %Zd\n", hcd_name, sizeof (struct ehci_qh), sizeof (struct ehci_qtd), diff -urN linux-2.4.22.org/drivers/usb/host/uhci.c linux-2.4.22/drivers/usb/host/uhci.c --- linux-2.4.22.org/drivers/usb/host/uhci.c 2003-11-21 19:50:57.000000000 +0100 +++ linux-2.4.22/drivers/usb/host/uhci.c 2003-11-21 19:59:22.000000000 +0100 @@ -3099,10 +3099,14 @@ #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 -urN linux-2.4.22.org/drivers/usb/host/usb-ohci.c linux-2.4.22/drivers/usb/host/usb-ohci.c --- linux-2.4.22.org/drivers/usb/host/usb-ohci.c 2003-11-21 19:50:57.000000000 +0100 +++ linux-2.4.22/drivers/usb/host/usb-ohci.c 2003-11-21 19:59:22.000000000 +0100 @@ -2939,9 +2939,12 @@ /*-------------------------------------------------------------------------*/ +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 -urN linux-2.4.22.org/drivers/usb/host/usb-uhci.c linux-2.4.22/drivers/usb/host/usb-uhci.c --- linux-2.4.22.org/drivers/usb/host/usb-uhci.c 2003-11-21 19:50:57.000000000 +0100 +++ linux-2.4.22/drivers/usb/host/usb-uhci.c 2003-11-21 19:59:22.000000000 +0100 @@ -3092,10 +3092,14 @@ }; /*-------------------------------------------------------------------------*/ +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 -urN linux-2.4.22.org/init/main.c linux-2.4.22/init/main.c --- linux-2.4.22.org/init/main.c 2003-11-21 19:45:09.000000000 +0100 +++ linux-2.4.22/init/main.c 2003-11-21 19:59:22.000000000 +0100 @@ -138,6 +138,15 @@ __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 -urN linux-2.4.22.org/kernel/ksyms.c linux-2.4.22/kernel/ksyms.c --- linux-2.4.22.org/kernel/ksyms.c 2003-11-21 19:45:09.000000000 +0100 +++ linux-2.4.22/kernel/ksyms.c 2003-11-21 20:00:08.000000000 +0100 @@ -530,6 +530,8 @@ EXPORT_SYMBOL(seq_release); EXPORT_SYMBOL(seq_read); EXPORT_SYMBOL(seq_lseek); +extern int disable_all_usb; +EXPORT_SYMBOL(disable_all_usb); EXPORT_SYMBOL(single_open); EXPORT_SYMBOL(single_release); EXPORT_SYMBOL(seq_release_private);