I have created and applied the following patch
testing the kernel with heavy I/O seems now stable
my C3600 is still under testing, moving chunks of 500Mbyte and compiling gcc-v6
http://93.55.217.0//wonderland/chunk_of/user/ivelegacy/happa-dev/hppa2_0001_HPMC_fix_my_v1.patch
Can you maybe try to localize where in the drivers/ata/sata_via.c driver triggers the HPMC ?
--- arch/parisc/kernel/hpmc.S 2018-01-28 22:20:33.000000000 +0100Helge, did you check that os_hpmc is correctly entered after you added
+++ arch/parisc/kernel/hpmc.S 2018-03-15 14:13:46.611969815 +0100
@@ -308,4 +290,5 @@
.align 4
.export os_hpmc_size
os_hpmc_size:
- .word .os_hpmc_end-.os_hpmc
+ /* .word .os_hpmc_end-.os_hpmc */
+ .word (.os_hpmc_end - .os_hpmc) * 4 /* sizeof(u32) */
This one seems wrong.
I think you just didn't hit a HPMC with your first patch, and as such
this patch has no influence...
* Carlo Pisani <carlojpisani@gmail.com>:
I have created and applied the following patch
testing the kernel with heavy I/O seems now stable
my C3600 is still under testing, moving chunks of 500Mbyte and compiling gcc-v6
http://93.55.217.0//wonderland/chunk_of/user/ivelegacy/happa-dev/hppa2_0001_HPMC_fix_my_v1.patch
--- drivers/parisc/lba_pci.c 2018-01-28 22:20:33.000000000 +0100
+++ drivers/parisc/lba_pci.c 2018-03-15 12:26:44.839894952 +0100
@@ -1405,7 +1405,7 @@
/* Set HF mode as the default (vs. -1 mode). */
stat = READ_REG32(d->hba.base_addr + LBA_STAT_CTL);
- WRITE_REG32(stat | HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL);
+ WRITE_REG32(stat & ~HF_ENABLE, d->hba.base_addr + LBA_STAT_CTL);
/*
** Writing a zero to STAT_CTL.rf (bit 0) will clear reset signal
That's the patch from Kyle: https://www.spinics.net/lists/linux-parisc/msg01027.html
which comes out of this mail thread: https://www.spinics.net/lists/linux-parisc/msg01024.html
specifically with those notes: https://www.spinics.net/lists/linux-parisc/msg01026.html
Citing here:
"bus timeout" usually means we tried to read an address that doesn't
respond. that is, nothing on the bus accepted the transaction for it,
so it timed out and HPMC'd the box.
what you really need is the IIR, and the address it tried to access
(both the kernel vaddr which will be in the register, and the "system requester address" from the hpmc dump which will be the physical address mapped.
not sure why the hpmc handler is getting skipped, that's a little weird.
you can try hacking elroy to set softfail mode on that bus, which will
result in a timeout on the pci bus to return -1 (like what x86 and most
other architectures do) rather than hang the box, but it really likely
means a driver bug.
So, you change LBA to return -1 instead of faulting via HPMC which is
of course one work-around to avoid the HPMC.
But could you try to check the driver instead?
You run this SATA controller:
01:05.0 RAID bus controller: VIA Technologies, Inc. VT6421 IDE RAID
Can you maybe try to localize where in the drivers/ata/sata_via.c driver triggers the HPMC ?
--- arch/parisc/kernel/hpmc.S 2018-01-28 22:20:33.000000000 +0100
+++ arch/parisc/kernel/hpmc.S 2018-03-15 14:13:46.611969815 +0100
@@ -308,4 +290,5 @@
.align 4
.export os_hpmc_size
os_hpmc_size:
- .word .os_hpmc_end-.os_hpmc
+ /* .word .os_hpmc_end-.os_hpmc */
+ .word (.os_hpmc_end - .os_hpmc) * 4 /* sizeof(u32) */
This one seems wrong.
I think you just didn't hit a HPMC with your first patch, and as such
this patch has no influence...
Helge
invalid MMIO read data (~0L).
I repeat AGAIN
I have tested different sATA controllers
- via6421
- SIL24
- Adaptex 2410
none of them has never complained in dmesg ( i have the console
redirected the serial port )
and all of them showed the same behavior under heavy I/O
the C3600 machine stops to work, and I see errors in the LCD
without a line from the kernel on the serial console
"Master Abort" means the MMIOIn lba_pci.c and sba_iommu.c, it says "BE WARNED: register writes are
transaction timed out - usually due to the device not responding to an
MMIO read.
different for each card. It's been over 10 years but ISTR that "SER
PIM" command when entered at boot prompt will dump those details.
this is an old log http://93.55.217.0/wonderland/chunk_of/user/ivelegacy/hppa-dev/ser-prim-2018-03-12--sata-crash
my C3600 is now busy, compiling 4.16.*, a couple of branches with two different configurations, so I can't force a crash to have a fresh log
at the moment, but I will with several SATA card!
what about SAS kernel modules? are them better than SATA?
and what about SCSI (adaptec 29320, PCI-X)?
I am waiting for an array of disks, I can test the SCSI card under
heavy I/O to see
- performance
- stability
it will be delivered here for the end of the next week
this is an old log
http://93.55.217.0/wonderland/chunk_of/user/ivelegacy/hppa-dev/ser-prim-2018-03-12--sata-crash
Hi Grant,
On 2018-03-17 12:12 PM, Grant Grundler wrote:
"Master Abort" means the MMIO
transaction timed out - usually due to the device not responding to an
MMIO read.
In lba_pci.c and sba_iommu.c, it says "BE WARNED: register writes are
posted" and need to be followed by a read. It seems there are a some routines in these modules that have writes that aren't followed by a read. One is lba_wr_cfg(). Another might be the macro
LBA_CFG_RESTORE(). Are these okay?
It seems probable that the problem that Carlo is having is a conflict
between devices.
Probably, it would be useful to have verbose output from lspci posted to
list as well.
c3600 ~ $ lspci -v
00:0c.0 Ethernet controller: Digital Equipment Corporation DECchip
21142/43 (rev 41)
Subsystem: Hewlett-Packard Company DECchip 21142/43
Flags: bus master, medium devsel, latency 255, IRQ 17
I/O ports at 1000 [size=128]
Memory at fffffffff4008000 (32-bit, non-prefetchable) [size=1K]
Expansion ROM at fffffffff4040000 [disabled] [size=256K]
Kernel driver in use: tulip
lspci: Unable to load libkmod resources: error -12
00:0d.0 Multimedia audio controller: Analog Devices Device 1889
Subsystem: Analog Devices Device 1889
Flags: bus master, medium devsel, latency 255, IRQ 18
Memory at fffffffff400c000 (32-bit, prefetchable) [size=512]
Memory at fffffffff400b000 (32-bit, prefetchable) [size=16]
Memory at fffffffff400a000 (32-bit, prefetchable) [size=16]
Memory at fffffffff4009000 (32-bit, prefetchable) [size=16]
Capabilities: [dc] Power Management version 1
Kernel driver in use: snd_ad1889
00:0e.0 IDE interface: National Semiconductor Corporation 87415/87560
IDE (rev 03) (prog-if 8f [Master SecP SecO PriP PriO])
Flags: bus master, medium devsel, latency 255, IRQ 7
I/O ports at 0f00 [size=8]
I/O ports at 0e00 [size=4]
I/O ports at 0d00 [size=8]
I/O ports at 0b00 [size=4]
I/O ports at 0a00 [size=16]
Kernel driver in use: NS87415_IDE
00:0e.1 Bridge: National Semiconductor Corporation 87560 Legacy I/O (rev 01)
Flags: bus master, medium devsel, latency 255, IRQ 19
Kernel driver in use: SuperIO
00:0e.2 USB controller: National Semiconductor Corporation USB
Controller (rev 02) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 240, IRQ 1
Memory at fffffffff4007000 (32-bit, non-prefetchable) [size=4K]
Memory at fffffffff4006000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci-pci
00:0f.0 SCSI storage controller: LSI Logic / Symbios Logic 53C896/897 (rev 07)
Subsystem: LSI Logic / Symbios Logic LSI53C896/7 PCI to Dual
Channel Ultra2 SCSI Multifunction Controller
Flags: bus master, medium devsel, latency 255, IRQ 20
I/O ports at 0900 [size=256]
Memory at fffffffff4005000 (64-bit, non-prefetchable) [size=1K]
Memory at fffffffff4002000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Kernel driver in use: sym53c8xx
00:0f.1 SCSI storage controller: LSI Logic / Symbios Logic 53C896/897 (rev 07)
Subsystem: LSI Logic / Symbios Logic LSI53C896/7 PCI to Dual
Channel Ultra2 SCSI Multifunction Controller
Flags: bus master, medium devsel, latency 255, IRQ 20
I/O ports at 0800 [size=256]
Memory at fffffffff4004000 (64-bit, non-prefetchable) [size=1K]
Memory at fffffffff4000000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Kernel driver in use: sym53c8xx
01:05.0 RAID bus controller: VIA Technologies, Inc. VT6421 IDE/SATA Controller (rev 50)
Subsystem: VIA Technologies, Inc. VT6421 IDE/SATA Controller
Flags: bus master, medium devsel, latency 240, IRQ 21
I/O ports at 12500 [size=16]
I/O ports at 12400 [size=16]
I/O ports at 12300 [size=16]
I/O ports at 12200 [size=16]
I/O ports at 12100 [size=32]
I/O ports at 12000 [size=256]
Expansion ROM at fffffffff4800000 [disabled] [size=64K]
Capabilities: [e0] Power Management version 2
Kernel driver in use: sata_via
On 2018-03-17 7:36 AM, Helge Deller wrote:
Can you maybe try to localize where in the drivers/ata/sata_via.c driver triggers the HPMC ?
--- arch/parisc/kernel/hpmc.S 2018-01-28 22:20:33.000000000 +0100
+++ arch/parisc/kernel/hpmc.S 2018-03-15 14:13:46.611969815 +0100
@@ -308,4 +290,5 @@
.align 4
.export os_hpmc_size
os_hpmc_size:
- .word .os_hpmc_end-.os_hpmc
+ /* .word .os_hpmc_end-.os_hpmc */
+ .word (.os_hpmc_end - .os_hpmc) * 4 /* sizeof(u32) */
This one seems wrong.
I think you just didn't hit a HPMC with your first patch, and as such
this patch has no influence...
Helge, did you check that os_hpmc is correctly entered after you added
the ".align 4" statement (e.g., trigger hpmc by accessing page 0 or
such)? I looked at one of my builds and the size is correct as is.
Is it possible that the length needs to be a multiple of 16? Current
length is 0x194.
There are a couple of minor issues with assembly code. There are no .type and .size directives for os_hpmc_size.
I think we should investigate further as I have never seen hpmc
handler entered on rp3440 or c8000. On rp3440, there are messages
about the branch failing in the SL log. However, this might have been
fixed by your alignment fix.
- length = os_hpmc_size;If this is true, should we not add three nops to the end of os_hpmc so
- ivap[7] = length;
+ length = ALIGN(os_hpmc_size, 16);
+ ivap[7] = length; /* length needs to be multiple of 16. */
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 54:48:51 |
Calls: | 6,650 |
Calls today: | 2 |
Files: | 12,200 |
Messages: | 5,330,629 |