Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 65185 Details for
Bug 87182
skge: ignoring bogus sensor interrupts
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Possible fix
skge.patch (text/plain), 3.14 KB, created by
Daniel Drake (RETIRED)
on 2005-08-05 09:40:08 UTC
(
hide
)
Description:
Possible fix
Filename:
MIME Type:
Creator:
Daniel Drake (RETIRED)
Created:
2005-08-05 09:40:08 UTC
Size:
3.14 KB
patch
obsolete
>--- linux-2.6.12-gentoo-r7/drivers/net/skge.c.orig 2005-08-05 17:31:07.000000000 +0100 >+++ linux-2.6.12-gentoo-r7/drivers/net/skge.c 2005-08-05 17:34:37.000000000 +0100 >@@ -2683,18 +2683,6 @@ static void skge_error_irq(struct skge_h > /* Timestamp (unused) overflow */ > if (hwstatus & IS_IRQ_TIST_OV) > skge_write8(hw, GMAC_TI_ST_CTRL, GMT_ST_CLR_IRQ); >- >- if (hwstatus & IS_IRQ_SENSOR) { >- /* no sensors on 32-bit Yukon */ >- if (!(skge_read16(hw, B0_CTST) & CS_BUS_SLOT_SZ)) { >- printk(KERN_ERR PFX "ignoring bogus sensor interrups\n"); >- skge_write32(hw, B0_HWE_IMSK, >- IS_ERR_MSK & ~IS_IRQ_SENSOR); >- } else >- printk(KERN_WARNING PFX "sensor interrupt\n"); >- } >- >- > } > > if (hwstatus & IS_RAM_RD_PAR) { >@@ -2724,11 +2712,11 @@ static void skge_error_irq(struct skge_h > hwstatus); > > skge_pci_clear(hw); >- >+ >+ /* if error still set then just ignore it */ > hwstatus = skge_read32(hw, B0_HWE_ISRC); > if (hwstatus & IS_IRQ_STAT) { >- printk(KERN_WARNING PFX "IRQ status %x: still set ignoring hardware errors\n", >- hwstatus); >+ pr_debug("IRQ status %x: still set ignoring hardware errors\n", hwstatus); > hw->intr_mask &= ~IS_HW_ERR; > } > } >@@ -2961,12 +2949,20 @@ static int skge_reset(struct skge_hw *hw > else > hw->ram_size = t8 * 4096; > >+ hw->intr_mask = IS_HW_ERR | IS_EXT_REG; > if (hw->chip_id == CHIP_ID_GENESIS) > genesis_init(hw); > else { > /* switch power to VCC (WA for VAUX problem) */ > skge_write8(hw, B0_POWER_CTRL, > PC_VAUX_ENA | PC_VCC_ENA | PC_VAUX_OFF | PC_VCC_ON); >+ /* avoid boards with stuck Hardware error bits */ >+ if ((skge_read32(hw, B0_ISRC) & IS_HW_ERR) && >+ (skge_read32(hw, B0_HWE_ISRC) & IS_IRQ_SENSOR)) { >+ printk(KERN_WARNING PFX "stuck hardware sensor bit\n"); >+ hw->intr_mask &= ~IS_HW_ERR; >+ } >+ > for (i = 0; i < hw->ports; i++) { > skge_write16(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET); > skge_write16(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_CLR); >@@ -3007,7 +3003,6 @@ static int skge_reset(struct skge_hw *hw > skge_write32(hw, B2_IRQM_INI, skge_usecs2clk(hw, 100)); > skge_write32(hw, B2_IRQM_CTRL, TIM_START); > >- hw->intr_mask = IS_HW_ERR | IS_EXT_REG; > skge_write32(hw, B0_IMSK, hw->intr_mask); > > if (hw->chip_id != CHIP_ID_GENESIS) >--- linux-2.6.12-gentoo-r7/drivers/net/skge.h.orig 2005-08-05 17:34:42.000000000 +0100 >+++ linux-2.6.12-gentoo-r7/drivers/net/skge.h 2005-08-05 17:36:26.000000000 +0100 >@@ -213,8 +213,6 @@ enum { > > /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ > enum { >- IS_ERR_MSK = 0x00003fff,/* All Error bits */ >- > IS_IRQ_TIST_OV = 1<<13, /* Time Stamp Timer Overflow (YUKON only) */ > IS_IRQ_SENSOR = 1<<12, /* IRQ from Sensor (YUKON only) */ > IS_IRQ_MST_ERR = 1<<11, /* IRQ master error detected */ >@@ -229,6 +227,12 @@ enum { > IS_M2_PAR_ERR = 1<<2, /* MAC 2 Parity Error */ > IS_R1_PAR_ERR = 1<<1, /* Queue R1 Parity Error */ > IS_R2_PAR_ERR = 1<<0, /* Queue R2 Parity Error */ >+ >+ IS_ERR_MSK = IS_IRQ_MST_ERR | IS_IRQ_STAT >+ | IS_NO_STAT_M1 | IS_NO_STAT_M2 >+ | IS_RAM_RD_PAR | IS_RAM_WR_PAR >+ | IS_M1_PAR_ERR | IS_M2_PAR_ERR >+ | IS_R1_PAR_ERR | IS_R2_PAR_ERR, > }; > > /* B2_TST_CTRL1 8 bit Test Control Register 1 */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 87182
: 65185