Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6aa4cdd0 authored by Ingo Molnar's avatar Ingo Molnar Committed by Greg Kroah-Hartman
Browse files

[PATCH] PCI hotplug: convert semaphores to mutex



semaphore to mutex conversion.

the conversion was generated via scripts, and the result was validated
automatically via a script as well.

build tested with allyesconfig.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c408a379
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@

#include <linux/acpi.h>
#include <linux/kobject.h>	/* for KOBJ_NAME_LEN */
#include <linux/mutex.h>
#include "pci_hotplug.h"

#define dbg(format, arg...)					\
@@ -118,7 +119,7 @@ struct acpiphp_slot {
	struct acpiphp_bridge *bridge;	/* parent */
	struct list_head funcs;		/* one slot may have different
					   objects (i.e. for each function) */
	struct semaphore crit_sect;
	struct mutex crit_sect;

	u32		id;		/* slot id (serial #) for hotplug core */
	u8		device;		/* pci device# */
+6 −6
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/smp_lock.h>
#include <asm/semaphore.h>
#include <linux/mutex.h>

#include "../pci.h"
#include "pci_hotplug.h"
@@ -188,7 +188,7 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
		slot->device = device;
		slot->sun = sun;
		INIT_LIST_HEAD(&slot->funcs);
		init_MUTEX(&slot->crit_sect);
		mutex_init(&slot->crit_sect);

		slot->next = bridge->slots;
		bridge->slots = slot;
@@ -1401,7 +1401,7 @@ int acpiphp_enable_slot(struct acpiphp_slot *slot)
{
	int retval;

	down(&slot->crit_sect);
	mutex_lock(&slot->crit_sect);

	/* wake up all functions */
	retval = power_on_slot(slot);
@@ -1413,7 +1413,7 @@ int acpiphp_enable_slot(struct acpiphp_slot *slot)
		retval = enable_device(slot);

 err_exit:
	up(&slot->crit_sect);
	mutex_unlock(&slot->crit_sect);
	return retval;
}

@@ -1424,7 +1424,7 @@ int acpiphp_disable_slot(struct acpiphp_slot *slot)
{
	int retval = 0;

	down(&slot->crit_sect);
	mutex_lock(&slot->crit_sect);

	/* unconfigure all functions */
	retval = disable_device(slot);
@@ -1437,7 +1437,7 @@ int acpiphp_disable_slot(struct acpiphp_slot *slot)
		goto err_exit;

 err_exit:
	up(&slot->crit_sect);
	mutex_unlock(&slot->crit_sect);
	return retval;
}

+2 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <linux/interrupt.h>
#include <asm/io.h>		/* for read? and write? functions */
#include <linux/delay.h>	/* for delays */
#include <linux/mutex.h>

#define MY_NAME	"cpqphp"

@@ -286,7 +287,7 @@ struct event_info {
struct controller {
	struct controller *next;
	u32 ctrl_int_comp;
	struct semaphore crit_sect;	/* critical section semaphore */
	struct mutex crit_sect;		/* critical section mutex */
	void __iomem *hpc_reg;		/* cookie for our pci controller location */
	struct pci_resource *mem_head;
	struct pci_resource *p_mem_head;
+7 −7
Original line number Diff line number Diff line
@@ -599,7 +599,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
	hp_slot = func->device - ctrl->slot_device_offset;

	// Wait for exclusive access to hardware
	down(&ctrl->crit_sect);
	mutex_lock(&ctrl->crit_sect);

	if (status == 1) {
		amber_LED_on (ctrl, hp_slot);
@@ -607,7 +607,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
		amber_LED_off (ctrl, hp_slot);
	} else {
		// Done with exclusive hardware access
		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);
		return(1);
	}

@@ -617,7 +617,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
	wait_for_ctrl_irq (ctrl);

	// Done with exclusive hardware access
	up(&ctrl->crit_sect);
	mutex_unlock(&ctrl->crit_sect);

	return(0);
}
@@ -1084,7 +1084,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	dbg("bus device function rev: %d %d %d %d\n", ctrl->bus,
		PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn), ctrl->rev);

	init_MUTEX(&ctrl->crit_sect);
	mutex_init(&ctrl->crit_sect);
	init_waitqueue_head(&ctrl->queue);

	/* initialize our threads if they haven't already been started up */
@@ -1223,7 +1223,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)

	// turn off empty slots here unless command line option "ON" set
	// Wait for exclusive access to hardware
	down(&ctrl->crit_sect);
	mutex_lock(&ctrl->crit_sect);

	num_of_slots = readb(ctrl->hpc_reg + SLOT_MASK) & 0x0F;

@@ -1270,12 +1270,12 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	rc = init_SERR(ctrl);
	if (rc) {
		err("init_SERR failed\n");
		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);
		goto err_free_irq;
	}

	// Done with exclusive hardware access
	up(&ctrl->crit_sect);
	mutex_unlock(&ctrl->crit_sect);

	cpqhp_create_debugfs_files(ctrl);

+28 −28
Original line number Diff line number Diff line
@@ -1299,7 +1299,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
		 **********************************/
		rc = CARD_FUNCTIONING;
	} else {
		down(&ctrl->crit_sect);
		mutex_lock(&ctrl->crit_sect);

		/* turn on board without attaching to the bus */
		enable_slot_power (ctrl, hp_slot);
@@ -1333,12 +1333,12 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
		/* Wait for SOBS to be unset */
		wait_for_ctrl_irq (ctrl);

		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);

		if (rc)
			return rc;

		down(&ctrl->crit_sect);
		mutex_lock(&ctrl->crit_sect);

		slot_enable (ctrl, hp_slot);
		green_LED_blink (ctrl, hp_slot);
@@ -1350,7 +1350,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
		/* Wait for SOBS to be unset */
		wait_for_ctrl_irq (ctrl);

		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);

		/* Wait for ~1 second because of hot plug spec */
		long_delay(1*HZ);
@@ -1375,7 +1375,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
				 * called for the "base" bus/dev/func of an
				 * adapter. */

				down(&ctrl->crit_sect);
				mutex_lock(&ctrl->crit_sect);

				amber_LED_on (ctrl, hp_slot);
				green_LED_off (ctrl, hp_slot);
@@ -1386,7 +1386,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
				/* Wait for SOBS to be unset */
				wait_for_ctrl_irq (ctrl);

				up(&ctrl->crit_sect);
				mutex_unlock(&ctrl->crit_sect);

				if (rc)
					return rc;
@@ -1410,7 +1410,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
				 * called for the "base" bus/dev/func of an
				 * adapter. */

				down(&ctrl->crit_sect);
				mutex_lock(&ctrl->crit_sect);

				amber_LED_on (ctrl, hp_slot);
				green_LED_off (ctrl, hp_slot);
@@ -1421,13 +1421,13 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
				/* Wait for SOBS to be unset */
				wait_for_ctrl_irq (ctrl);

				up(&ctrl->crit_sect);
				mutex_unlock(&ctrl->crit_sect);

				return rc;
			}
			/* Done configuring so turn LED on full time */

			down(&ctrl->crit_sect);
			mutex_lock(&ctrl->crit_sect);

			green_LED_on (ctrl, hp_slot);

@@ -1436,7 +1436,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
			/* Wait for SOBS to be unset */
			wait_for_ctrl_irq (ctrl);

			up(&ctrl->crit_sect);
			mutex_unlock(&ctrl->crit_sect);
			rc = 0;
		} else {
			/* Something is wrong
@@ -1445,7 +1445,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
			 * in this case it will always be called for the "base"
			 * bus/dev/func of an adapter. */

			down(&ctrl->crit_sect);
			mutex_lock(&ctrl->crit_sect);

			amber_LED_on (ctrl, hp_slot);
			green_LED_off (ctrl, hp_slot);
@@ -1456,7 +1456,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
			/* Wait for SOBS to be unset */
			wait_for_ctrl_irq (ctrl);

			up(&ctrl->crit_sect);
			mutex_unlock(&ctrl->crit_sect);
		}

	}
@@ -1488,7 +1488,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
	dbg("%s: func->device, slot_offset, hp_slot = %d, %d ,%d\n",
	    __FUNCTION__, func->device, ctrl->slot_device_offset, hp_slot);

	down(&ctrl->crit_sect);
	mutex_lock(&ctrl->crit_sect);

	/* turn on board without attaching to the bus */
	enable_slot_power(ctrl, hp_slot);
@@ -1522,7 +1522,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
	/* Wait for SOBS to be unset */
	wait_for_ctrl_irq(ctrl);

	up(&ctrl->crit_sect);
	mutex_unlock(&ctrl->crit_sect);

	if (rc)
		return rc;
@@ -1532,7 +1532,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
	/* turn on board and blink green LED */

	dbg("%s: before down\n", __FUNCTION__);
	down(&ctrl->crit_sect);
	mutex_lock(&ctrl->crit_sect);
	dbg("%s: after down\n", __FUNCTION__);

	dbg("%s: before slot_enable\n", __FUNCTION__);
@@ -1553,7 +1553,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
	dbg("%s: after wait_for_ctrl_irq\n", __FUNCTION__);

	dbg("%s: before up\n", __FUNCTION__);
	up(&ctrl->crit_sect);
	mutex_unlock(&ctrl->crit_sect);
	dbg("%s: after up\n", __FUNCTION__);

	/* Wait for ~1 second because of hot plug spec */
@@ -1607,7 +1607,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
		cpqhp_resource_sort_and_combine(&(ctrl->bus_head));

		if (rc) {
			down(&ctrl->crit_sect);
			mutex_lock(&ctrl->crit_sect);

			amber_LED_on (ctrl, hp_slot);
			green_LED_off (ctrl, hp_slot);
@@ -1618,7 +1618,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
			/* Wait for SOBS to be unset */
			wait_for_ctrl_irq (ctrl);

			up(&ctrl->crit_sect);
			mutex_unlock(&ctrl->crit_sect);
			return rc;
		} else {
			cpqhp_save_slot_config(ctrl, func);
@@ -1640,7 +1640,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
			}
		} while (new_slot);

		down(&ctrl->crit_sect);
		mutex_lock(&ctrl->crit_sect);

		green_LED_on (ctrl, hp_slot);

@@ -1649,9 +1649,9 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
		/* Wait for SOBS to be unset */
		wait_for_ctrl_irq (ctrl);

		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);
	} else {
		down(&ctrl->crit_sect);
		mutex_lock(&ctrl->crit_sect);

		amber_LED_on (ctrl, hp_slot);
		green_LED_off (ctrl, hp_slot);
@@ -1662,7 +1662,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
		/* Wait for SOBS to be unset */
		wait_for_ctrl_irq (ctrl);

		up(&ctrl->crit_sect);
		mutex_unlock(&ctrl->crit_sect);

		return rc;
	}
@@ -1721,7 +1721,7 @@ static u32 remove_board(struct pci_func * func, u32 replace_flag, struct control
		func->status = 0x01;
	func->configured = 0;

	down(&ctrl->crit_sect);
	mutex_lock(&ctrl->crit_sect);

	green_LED_off (ctrl, hp_slot);
	slot_disable (ctrl, hp_slot);
@@ -1736,7 +1736,7 @@ static u32 remove_board(struct pci_func * func, u32 replace_flag, struct control
	/* Wait for SOBS to be unset */
	wait_for_ctrl_irq (ctrl);

	up(&ctrl->crit_sect);
	mutex_unlock(&ctrl->crit_sect);

	if (!replace_flag && ctrl->add_support) {
		while (func) {
@@ -1899,7 +1899,7 @@ static void interrupt_event_handler(struct controller *ctrl)
					dbg("button cancel\n");
					del_timer(&p_slot->task_event);

					down(&ctrl->crit_sect);
					mutex_lock(&ctrl->crit_sect);

					if (p_slot->state == BLINKINGOFF_STATE) {
						/* slot is on */
@@ -1922,7 +1922,7 @@ static void interrupt_event_handler(struct controller *ctrl)
					/* Wait for SOBS to be unset */
					wait_for_ctrl_irq (ctrl);

					up(&ctrl->crit_sect);
					mutex_unlock(&ctrl->crit_sect);
				}
				/*** button Released (No action on press...) */
				else if (ctrl->event_queue[loop].event_type == INT_BUTTON_RELEASE) {
@@ -1937,7 +1937,7 @@ static void interrupt_event_handler(struct controller *ctrl)
						p_slot->state = BLINKINGON_STATE;
						info(msg_button_on, p_slot->number);
					}
					down(&ctrl->crit_sect);
					mutex_lock(&ctrl->crit_sect);
					
					dbg("blink green LED and turn off amber\n");
					
@@ -1949,7 +1949,7 @@ static void interrupt_event_handler(struct controller *ctrl)
					/* Wait for SOBS to be unset */
					wait_for_ctrl_irq (ctrl);

					up(&ctrl->crit_sect);
					mutex_unlock(&ctrl->crit_sect);
					init_timer(&p_slot->task_event);
					p_slot->hp_slot = hp_slot;
					p_slot->ctrl = ctrl;
Loading