Commit 7038db70 authored by Martin K. Petersen's avatar Martin K. Petersen
Browse files

Merge patch series "libsas cleanups"

Damien Le Moal <dlemoal@kernel.org> says:

Martin, John,

While debugging an issue with the pm8001 driver, I generated these
cleanup patches. No functional changes overall.

These patches are against the 6.17/scsi-staging branch of the scsi tree.

Link: https://lore.kernel.org/r/20250725015818.171252-1-dlemoal@kernel.org


Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parents 8e48727c 75fe230b
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ static int sas_get_ata_command_set(struct domain_device *dev)
	return ata_dev_classify(&tf);
}

int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
static int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
{
	if (phy->attached_tproto & SAS_PROTOCOL_STP)
		dev->tproto = phy->attached_tproto;
@@ -927,13 +927,7 @@ EXPORT_SYMBOL_GPL(sas_ata_schedule_reset);

void sas_ata_wait_eh(struct domain_device *dev)
{
	struct ata_port *ap;

	if (!dev_is_sata(dev))
		return;

	ap = dev->sata_dev.ap;
	ata_port_wait_eh(ap);
	ata_port_wait_eh(dev->sata_dev.ap);
}

void sas_ata_device_link_abort(struct domain_device *device, bool force_reset)
+1 −1
Original line number Diff line number Diff line
@@ -406,7 +406,7 @@ void sas_unregister_dev(struct asd_sas_port *port, struct domain_device *dev)
	}
}

void sas_unregister_domain_devices(struct asd_sas_port *port, int gone)
void sas_unregister_domain_devices(struct asd_sas_port *port, bool gone)
{
	struct domain_device *dev, *n;

+76 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ void sas_hash_addr(u8 *hashed, const u8 *sas_addr);
int sas_discover_root_expander(struct domain_device *dev);

int sas_ex_revalidate_domain(struct domain_device *dev);
void sas_unregister_domain_devices(struct asd_sas_port *port, int gone);
void sas_unregister_domain_devices(struct asd_sas_port *port, bool gone);
void sas_init_disc(struct sas_discovery *disc, struct asd_sas_port *port);
void sas_discover_event(struct asd_sas_port *port, enum discover_event ev);

@@ -70,7 +70,7 @@ void sas_enable_revalidation(struct sas_ha_struct *ha);
void sas_queue_deferred_work(struct sas_ha_struct *ha);
void __sas_drain_work(struct sas_ha_struct *ha);

void sas_deform_port(struct asd_sas_phy *phy, int gone);
void sas_deform_port(struct asd_sas_phy *phy, bool gone);

void sas_porte_bytes_dmaed(struct work_struct *work);
void sas_porte_broadcast_rcvd(struct work_struct *work);
@@ -222,4 +222,78 @@ static inline void sas_put_device(struct domain_device *dev)
	kref_put(&dev->kref, sas_free_device);
}

#ifdef CONFIG_SCSI_SAS_ATA

int sas_ata_init(struct domain_device *dev);
void sas_ata_task_abort(struct sas_task *task);
int sas_discover_sata(struct domain_device *dev);
int sas_ata_add_dev(struct domain_device *parent, struct ex_phy *phy,
		    struct domain_device *child, int phy_id);
void sas_ata_strategy_handler(struct Scsi_Host *shost);
void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q);
void sas_ata_end_eh(struct ata_port *ap);
void sas_ata_wait_eh(struct domain_device *dev);
void sas_probe_sata(struct asd_sas_port *port);
void sas_suspend_sata(struct asd_sas_port *port);
void sas_resume_sata(struct asd_sas_port *port);

#else

static inline int sas_ata_init(struct domain_device *dev)
{
	return 0;
}

static inline void sas_ata_task_abort(struct sas_task *task)
{
}

static inline void sas_ata_strategy_handler(struct Scsi_Host *shost)
{
}

static inline void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q)
{
}

static inline void sas_ata_end_eh(struct ata_port *ap)
{
}

static inline void sas_ata_wait_eh(struct domain_device *dev)
{
}

static inline void sas_probe_sata(struct asd_sas_port *port)
{
}

static inline void sas_suspend_sata(struct asd_sas_port *port)
{
}

static inline void sas_resume_sata(struct asd_sas_port *port)
{
}

static inline void sas_ata_disabled_notice(void)
{
	pr_notice_once("ATA device seen but CONFIG_SCSI_SAS_ATA=N\n");
}

static inline int sas_discover_sata(struct domain_device *dev)
{
	sas_ata_disabled_notice();
	return -ENXIO;
}

static inline int sas_ata_add_dev(struct domain_device *parent, struct ex_phy *phy,
				  struct domain_device *child, int phy_id)
{
	sas_ata_disabled_notice();
	return -ENODEV;
}

#endif

#endif /* _SAS_INTERNAL_H_ */
+3 −3
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ static void sas_phye_loss_of_signal(struct work_struct *work)
	struct asd_sas_phy *phy = ev->phy;

	phy->error = 0;
	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);
}

static void sas_phye_oob_done(struct work_struct *work)
@@ -40,7 +40,7 @@ static void sas_phye_oob_error(struct work_struct *work)
	struct sas_internal *i =
		to_sas_internal(sas_ha->shost->transportt);

	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);

	if (!port && phy->enabled && i->dft->lldd_control_phy) {
		phy->error++;
@@ -85,7 +85,7 @@ static void sas_phye_resume_timeout(struct work_struct *work)

	phy->error = 0;
	phy->suspended = 0;
	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);
}


+6 −7
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ static void sas_form_port(struct asd_sas_phy *phy)

	if (port) {
		if (!phy_is_wideport_member(port, phy))
			sas_deform_port(phy, 0);
			sas_deform_port(phy, false);
		else if (phy->suspended) {
			phy->suspended = 0;
			sas_resume_port(phy);
@@ -206,7 +206,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
 * This is called when the physical link to the other phy has been
 * lost (on this phy), in Event thread context. We cannot delay here.
 */
void sas_deform_port(struct asd_sas_phy *phy, int gone)
void sas_deform_port(struct asd_sas_phy *phy, bool gone)
{
	struct sas_ha_struct *sas_ha = phy->ha;
	struct asd_sas_port *port = phy->port;
@@ -301,7 +301,7 @@ void sas_porte_link_reset_err(struct work_struct *work)
	struct asd_sas_event *ev = to_asd_sas_event(work);
	struct asd_sas_phy *phy = ev->phy;

	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);
}

void sas_porte_timer_event(struct work_struct *work)
@@ -309,7 +309,7 @@ void sas_porte_timer_event(struct work_struct *work)
	struct asd_sas_event *ev = to_asd_sas_event(work);
	struct asd_sas_phy *phy = ev->phy;

	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);
}

void sas_porte_hard_reset(struct work_struct *work)
@@ -317,7 +317,7 @@ void sas_porte_hard_reset(struct work_struct *work)
	struct asd_sas_event *ev = to_asd_sas_event(work);
	struct asd_sas_phy *phy = ev->phy;

	sas_deform_port(phy, 1);
	sas_deform_port(phy, true);
}

/* ---------- SAS port registration ---------- */
@@ -358,8 +358,7 @@ void sas_unregister_ports(struct sas_ha_struct *sas_ha)

	for (i = 0; i < sas_ha->num_phys; i++)
		if (sas_ha->sas_phy[i]->port)
			sas_deform_port(sas_ha->sas_phy[i], 0);

			sas_deform_port(sas_ha->sas_phy[i], false);
}

const work_func_t sas_port_event_fns[PORT_NUM_EVENTS] = {
Loading