diff mbox

[OpenWrt-Devel] oxnas: set irq of usb&sata to cpu1

Message ID 1448260234-10403-1-git-send-email-countrysideboy@qq.com
State Changes Requested
Headers show

Commit Message

play4fun Nov. 23, 2015, 6:30 a.m. UTC
Signed-off-by: Shonn Lu <countrysideboy@qq.com>
---
 .../linux/oxnas/base-files/init.d/set-irq-affinity | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100755 target/linux/oxnas/base-files/init.d/set-irq-affinity

Comments

John Crispin Nov. 23, 2015, 6:48 a.m. UTC | #1
What is the difference between this and the previous version ?

	John

On 23/11/2015 07:30, Shonn Lu wrote:
> Signed-off-by: Shonn Lu <countrysideboy@qq.com>
> ---
>  .../linux/oxnas/base-files/init.d/set-irq-affinity | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>  create mode 100755 target/linux/oxnas/base-files/init.d/set-irq-affinity
> 
> diff --git a/target/linux/oxnas/base-files/init.d/set-irq-affinity b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> new file mode 100755
> index 0000000..8ab066f
> --- /dev/null
> +++ b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> @@ -0,0 +1,22 @@
> +#!/bin/sh /etc/rc.common
> +
> +START=99
> +
> +get_irq() {
> +	local name="$1"
> +	grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,'
> +}
> +
> +set_irq_affinity() {
> +	local name="$1"
> +	local val="$2"
> +	local irq="$(get_irq "$name")"
> +	[ -n "$irq" ] || return
> +	echo "$val" > "/proc/irq/$irq/smp_affinity"
> +}
> +
> +start() {
> +	set_irq_affinity ehci_hcd 2
> +	set_irq_affinity xhci_hcd 2
> +	set_irq_affinity sata 2
> +}
>
Daniel Golle Nov. 23, 2015, 3:24 p.m. UTC | #2
On Mon, Nov 23, 2015 at 02:30:34PM +0800, Shonn Lu wrote:
> Signed-off-by: Shonn Lu <countrysideboy@qq.com>
> ---
>  .../linux/oxnas/base-files/init.d/set-irq-affinity | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>  create mode 100755 target/linux/oxnas/base-files/init.d/set-irq-affinity
> 
> diff --git a/target/linux/oxnas/base-files/init.d/set-irq-affinity b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> new file mode 100755
> index 0000000..8ab066f
> --- /dev/null
> +++ b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> @@ -0,0 +1,22 @@
> +#!/bin/sh /etc/rc.common
> +
> +START=99
> +
> +get_irq() {
> +	local name="$1"
> +	grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,'
> +}
> +
> +set_irq_affinity() {
> +	local name="$1"
> +	local val="$2"
> +	local irq="$(get_irq "$name")"
> +	[ -n "$irq" ] || return
> +	echo "$val" > "/proc/irq/$irq/smp_affinity"
> +}
> +
> +start() {
> +	set_irq_affinity ehci_hcd 2
> +	set_irq_affinity xhci_hcd 2
> +	set_irq_affinity sata 2
> +}

I'm sorry to be such a pain, however, now that I have a closer look I
realize that naming is 'ehci_hcd' but 'xhci-hcd' (note: '-' vs. '_')
Maybe

	set_irq_affinity ehci 2
	set_irq_affinity xhci 2

is the safest for now and allows for kernel's driver naming to
eventually get unified in the future...


Cheers


Daniel
Daniel Golle Nov. 27, 2015, 2:15 a.m. UTC | #3
Hi!

This was committed in r47618 though it is buggy (see below) and not
clear whether manually setting irq-affinity is at all feasible.
Please revert.

Cheers

Daniel

On Mon, Nov 23, 2015 at 04:24:02PM +0100, Daniel Golle wrote:
> On Mon, Nov 23, 2015 at 02:30:34PM +0800, Shonn Lu wrote:
> > Signed-off-by: Shonn Lu <countrysideboy@qq.com>
> > ---
> >  .../linux/oxnas/base-files/init.d/set-irq-affinity | 22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> >  create mode 100755 target/linux/oxnas/base-files/init.d/set-irq-affinity
> > 
> > diff --git a/target/linux/oxnas/base-files/init.d/set-irq-affinity b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> > new file mode 100755
> > index 0000000..8ab066f
> > --- /dev/null
> > +++ b/target/linux/oxnas/base-files/init.d/set-irq-affinity
> > @@ -0,0 +1,22 @@
> > +#!/bin/sh /etc/rc.common
> > +
> > +START=99
> > +
> > +get_irq() {
> > +	local name="$1"
> > +	grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,'
> > +}
> > +
> > +set_irq_affinity() {
> > +	local name="$1"
> > +	local val="$2"
> > +	local irq="$(get_irq "$name")"
> > +	[ -n "$irq" ] || return
> > +	echo "$val" > "/proc/irq/$irq/smp_affinity"
> > +}
> > +
> > +start() {
> > +	set_irq_affinity ehci_hcd 2
> > +	set_irq_affinity xhci_hcd 2
> > +	set_irq_affinity sata 2
> > +}
> 
> I'm sorry to be such a pain, however, now that I have a closer look I
> realize that naming is 'ehci_hcd' but 'xhci-hcd' (note: '-' vs. '_')
> Maybe
> 
> 	set_irq_affinity ehci 2
> 	set_irq_affinity xhci 2
> 
> is the safest for now and allows for kernel's driver naming to
> eventually get unified in the future...
> 
> 
> Cheers
> 
> 
> Daniel
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
diff mbox

Patch

diff --git a/target/linux/oxnas/base-files/init.d/set-irq-affinity b/target/linux/oxnas/base-files/init.d/set-irq-affinity
new file mode 100755
index 0000000..8ab066f
--- /dev/null
+++ b/target/linux/oxnas/base-files/init.d/set-irq-affinity
@@ -0,0 +1,22 @@ 
+#!/bin/sh /etc/rc.common
+
+START=99
+
+get_irq() {
+	local name="$1"
+	grep -m 1 "$name" /proc/interrupts | cut -d: -f1 | sed 's, *,,'
+}
+
+set_irq_affinity() {
+	local name="$1"
+	local val="$2"
+	local irq="$(get_irq "$name")"
+	[ -n "$irq" ] || return
+	echo "$val" > "/proc/irq/$irq/smp_affinity"
+}
+
+start() {
+	set_irq_affinity ehci_hcd 2
+	set_irq_affinity xhci_hcd 2
+	set_irq_affinity sata 2
+}