*     @drv: pointer to the uart low level driver structure for this port
  *     @uport: uart port structure to use for this port.
  *
+ *     Context: task context, might sleep
+ *
  *     This allows the driver to register its own uart_port structure
  *     with the core driver.  The main purpose is to allow the low
  *     level uart drivers to expand uart_port, rather than having yet
        struct device *tty_dev;
        int num_groups;
 
-       BUG_ON(in_interrupt());
-
        if (uport->line >= drv->nr)
                return -EINVAL;
 
  *     @drv: pointer to the uart low level driver structure for this port
  *     @uport: uart port structure for this port
  *
+ *     Context: task context, might sleep
+ *
  *     This unhooks (and hangs up) the specified port structure from the
  *     core driver.  No further calls will be made to the low-level code
  *     for this port.
        struct tty_struct *tty;
        int ret = 0;
 
-       BUG_ON(in_interrupt());
-
        mutex_lock(&port_mutex);
 
        /*