Re: [PATCH net-next v08 1/8] hinic3: Async Event Queue interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 10 Jul 2025 14:08:17 +0800 Fan Gong wrote:
> +u32 hinic3_hwif_read_reg(struct hinic3_hwif *hwif, u32 reg)
> +{
> +	void __iomem *addr = hinic3_reg_addr(hwif, reg);
> +	__be32 raw_val;
> +
> +	raw_val = (__force __be32)readl(addr);
> +
> +	return be32_to_cpu(raw_val);
> +}
> +
> +void hinic3_hwif_write_reg(struct hinic3_hwif *hwif, u32 reg, u32 val)
> +{
> +	void __iomem *addr = hinic3_reg_addr(hwif, reg);
> +	__be32 raw_val = cpu_to_be32(val);
> +
> +	writel((__force u32)raw_val, addr);

You should probably use iowrite32be and ioread32be here

> +	queue_work_on(WORK_CPU_UNBOUND, aeqs->workq, &eq->aeq_work);

What's the point of calling queue_work_on() if you're passing UNBOUND

> +	wmb();    /* Write the init values */

barriers are not a flush, you need to say what writes this is
_separating_

> +	err = request_irq(eq->irq_id, aeq_interrupt, 0,
> +			  eq->irq_name, eq);
> +
> +	return err;

you can return request_irq()s retval directly

> +	synchronize_irq(eq->irq_id);
> +	free_irq(eq->irq_id, eq);

no need to sync irq before free
-- 
pw-bot: cr




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux