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

Commit fcd4d369 authored by Keith Busch's avatar Keith Busch Committed by Bjorn Helgaas
Browse files

PCI/AER: Remove error source from AER struct aer_rpc



The AER struct aer_rpc was carrying a copy of the error source simply as a
temperary variable.  Remove that from the structure and use a stack
variable for the purpose.

Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 3e41a317
Loading
Loading
Loading
Loading
+16 −17
Original line number Original line Diff line number Diff line
@@ -44,7 +44,6 @@ struct aer_rpc {
	struct pci_dev *rpd;		/* Root Port device */
	struct pci_dev *rpd;		/* Root Port device */
	struct work_struct dpc_handler;
	struct work_struct dpc_handler;
	struct aer_err_source e_sources[AER_ERROR_SOURCES_MAX];
	struct aer_err_source e_sources[AER_ERROR_SOURCES_MAX];
	struct aer_err_info e_info;
	unsigned short prod_idx;	/* Error Producer Index */
	unsigned short prod_idx;	/* Error Producer Index */
	unsigned short cons_idx;	/* Error Consumer Index */
	unsigned short cons_idx;	/* Error Consumer Index */
	int isr;
	int isr;
@@ -1176,7 +1175,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc,
		struct aer_err_source *e_src)
		struct aer_err_source *e_src)
{
{
	struct pci_dev *pdev = rpc->rpd;
	struct pci_dev *pdev = rpc->rpd;
	struct aer_err_info *e_info = &rpc->e_info;
	struct aer_err_info e_info;


	pci_rootport_aer_stats_incr(pdev, e_src);
	pci_rootport_aer_stats_incr(pdev, e_src);


@@ -1185,36 +1184,36 @@ static void aer_isr_one_error(struct aer_rpc *rpc,
	 * uncorrectable error being logged. Report correctable error first.
	 * uncorrectable error being logged. Report correctable error first.
	 */
	 */
	if (e_src->status & PCI_ERR_ROOT_COR_RCV) {
	if (e_src->status & PCI_ERR_ROOT_COR_RCV) {
		e_info->id = ERR_COR_ID(e_src->id);
		e_info.id = ERR_COR_ID(e_src->id);
		e_info->severity = AER_CORRECTABLE;
		e_info.severity = AER_CORRECTABLE;


		if (e_src->status & PCI_ERR_ROOT_MULTI_COR_RCV)
		if (e_src->status & PCI_ERR_ROOT_MULTI_COR_RCV)
			e_info->multi_error_valid = 1;
			e_info.multi_error_valid = 1;
		else
		else
			e_info->multi_error_valid = 0;
			e_info.multi_error_valid = 0;
		aer_print_port_info(pdev, e_info);
		aer_print_port_info(pdev, &e_info);


		if (find_source_device(pdev, e_info))
		if (find_source_device(pdev, &e_info))
			aer_process_err_devices(e_info);
			aer_process_err_devices(&e_info);
	}
	}


	if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) {
	if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) {
		e_info->id = ERR_UNCOR_ID(e_src->id);
		e_info.id = ERR_UNCOR_ID(e_src->id);


		if (e_src->status & PCI_ERR_ROOT_FATAL_RCV)
		if (e_src->status & PCI_ERR_ROOT_FATAL_RCV)
			e_info->severity = AER_FATAL;
			e_info.severity = AER_FATAL;
		else
		else
			e_info->severity = AER_NONFATAL;
			e_info.severity = AER_NONFATAL;


		if (e_src->status & PCI_ERR_ROOT_MULTI_UNCOR_RCV)
		if (e_src->status & PCI_ERR_ROOT_MULTI_UNCOR_RCV)
			e_info->multi_error_valid = 1;
			e_info.multi_error_valid = 1;
		else
		else
			e_info->multi_error_valid = 0;
			e_info.multi_error_valid = 0;


		aer_print_port_info(pdev, e_info);
		aer_print_port_info(pdev, &e_info);


		if (find_source_device(pdev, e_info))
		if (find_source_device(pdev, &e_info))
			aer_process_err_devices(e_info);
			aer_process_err_devices(&e_info);
	}
	}
}
}