Re: b43 kills my kernel

2009-11-18 Thread Oncaphillis
On 11/18/2009 08:54 AM, Peter Stuge wrote:
 Oncaphillis wrote:

 So as far as I understand both the early kernel as well as lspci
 think that the mmio area of the Broadcom chip is located at
 5710 only ssb gets the wrong address. It gets set in ssbioremap
 via pci_iomap.
  
 After the call to pci_iomap, the physical address (5710) gets
 mapped into a virtual address within the process address space.

 So it's fine.


Thanks for clarification. Based on the assumption that the IO mapping
is correct I had a closer look at sprom_do_read:

snip

 int i;
 for (i = 0; i  bus-sprom_size; i++) {
 printk(KERN_DEBUG In sprom_do_read idx:%d\n,i);
 sprom[i] = ioread16(bus-mmio + SSB_SPROM_BASE + (i * 2));
 }

/snip

The first ioread16 actually succeeds, only the second one fails.
My lspci -vnn tells me that the memory is:

Memory at 5710 (64-bit, non-prefetchable) [size=16K]

Could it be that one has to make a ioread32 here since the
memory is 64-bit ? I remember very very remotely that
in older days it was impossible or even forbidden to read
data from addresses which are not a multiple of 2/4/8 what
so ever. But that was pre-PCI.

Sebastian

___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Gábor Stefanik
On Wed, Nov 18, 2009 at 6:15 PM, Larry Finger larry.fin...@lwfinger.net wrote:
 On 11/18/2009 08:34 AM, Oncaphillis wrote:
 The first ioread16 actually succeeds, only the second one fails.
 My lspci -vnn tells me that the memory is:

 Memory at 5710 (64-bit, non-prefetchable) [size=16K]

 Could it be that one has to make a ioread32 here since the
 memory is 64-bit ? I remember very very remotely that
 in older days it was impossible or even forbidden to read
 data from addresses which are not a multiple of 2/4/8 what
 so ever. But that was pre-PCI.

 As long as a 16-bit read is aligned on an even address, it should be OK;
 however, to check completely, please try this patch:

 Index: wireless-testing/drivers/ssb/pci.c
 ===
 --- wireless-testing.orig/drivers/ssb/pci.c
 +++ wireless-testing/drivers/ssb/pci.c
 @@ -251,10 +251,16 @@ static int sprom_check_crc(const u16 *sp
  static int sprom_do_read(struct ssb_bus *bus, u16 *sprom)
  {
        int i;
 +       u32 buf;

 -       for (i = 0; i  bus-sprom_size; i++)
 -               sprom[i] = ioread16(bus-mmio + SSB_SPROM_BASE + (i * 2));
 -
 +       printk(KERN_INFO ssb: Entering %s\n, __func__);
 +       for (i = 0; i  bus-sprom_size; i = i + 2) {

I know this is just a debugging patch, but we use i+=2 or i += 2
in such cases.

 +               buf = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 2));
 +               printk(KERN_INFO ssb: Read 0x%.8X from SPROM\n, buf);
 +               sprom[i] = buf  0x;
 +               sprom[i+1] = (buf  16)  0x;
 +       }
 +       printk(KERN_INFO ssb: Leaving %s\n, __func__);
        return 0;
  }



 Larry

 ___
 Bcm43xx-dev mailing list
 Bcm43xx-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/bcm43xx-dev




-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Oncaphillis
On 11/18/2009 06:15 PM, Larry Finger wrote:
 On 11/18/2009 08:34 AM, Oncaphillis wrote:

 The first ioread16 actually succeeds, only the second one fails.
 My lspci -vnn tells me that the memory is:

 Memory at 5710 (64-bit, non-prefetchable) [size=16K]

 Could it be that one has to make a ioread32 here since the
 memory is 64-bit ? I remember very very remotely that
 in older days it was impossible or even forbidden to read
 data from addresses which are not a multiple of 2/4/8 what
 so ever. But that was pre-PCI.
  
 As long as a 16-bit read is aligned on an even address, it should be OK;
 however, to check completely, please try this patch:

 Index: wireless-testing/drivers/ssb/pci.c
 ===
 --- wireless-testing.orig/drivers/ssb/pci.c
 +++ wireless-testing/drivers/ssb/pci.c
 @@ -251,10 +251,16 @@ static int sprom_check_crc(const u16 *sp
   static int sprom_do_read(struct ssb_bus *bus, u16 *sprom)
   {
   int i;
 + u32 buf;

 - for (i = 0; i  bus-sprom_size; i++)
 - sprom[i] = ioread16(bus-mmio + SSB_SPROM_BASE + (i * 2));
 -
 + printk(KERN_INFO ssb: Entering %s\n, __func__);
 + for (i = 0; i  bus-sprom_size; i = i + 2) {
 + buf = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 2));
 + printk(KERN_INFO ssb: Read 0x%.8X from SPROM\n, buf);
 + sprom[i] = buf  0x;
 + sprom[i+1] = (buf  16)  0x;
 + }
 + printk(KERN_INFO ssb: Leaving %s\n, __func__);
   return 0;
   }



I already tried something similar. Unfortunately I can not report in detail
  right now since I've once again killed my kernel and my acer stands at 
home.
  I'll give more details in a couple of hours -- but the punch line is:

  (1) if I transform the series of ioread16 into a series of ioread32 
the loop
  runs through giving me a CRC error afterwards.
  (2) I tried to compensate for different endianess by doing this:

  u32 *my_buff = (u32 *)spromm;
  u32 dw;

for (i = 0; i  bus-sprom_size/2; i = i++) {
dw = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 4));
 my_buff[i] = (dw  16) | (dw  16);
}

  Is there something fishy in that approach ? I'm really not a
  hardware hacker. Still get a CRC error.

  (3) My next approach was to do a initial ioread16 on the index 0. And
  do the given loop afterwards including an output of read double words.
  But it seems under these conditions the ioread32 fails too, since I
  can't reach my laptop anymore.

  Sebastian




 Larry



___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Michael Buesch
On Wednesday 18 November 2009 18:36:12 Oncaphillis wrote:
  Index: wireless-testing/drivers/ssb/pci.c
  ===
  --- wireless-testing.orig/drivers/ssb/pci.c
  +++ wireless-testing/drivers/ssb/pci.c
  @@ -251,10 +251,16 @@ static int sprom_check_crc(const u16 *sp
static int sprom_do_read(struct ssb_bus *bus, u16 *sprom)
{
  int i;
  +   u32 buf;
 
  -   for (i = 0; i  bus-sprom_size; i++)
  -   sprom[i] = ioread16(bus-mmio + SSB_SPROM_BASE + (i * 2));
  -
  +   printk(KERN_INFO ssb: Entering %s\n, __func__);
  +   for (i = 0; i  bus-sprom_size; i = i + 2) {
  +   buf = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 2));
  +   printk(KERN_INFO ssb: Read 0x%.8X from SPROM\n, buf);
  +   sprom[i] = buf  0x;
  +   sprom[i+1] = (buf  16)  0x;
  +   }
  +   printk(KERN_INFO ssb: Leaving %s\n, __func__);
  return 0;
}
 
 


   u32 *my_buff = (u32 *)spromm;
   u32 dw;
 
   for (i = 0; i  bus-sprom_size/2; i = i++) {
   dw = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 4));
  my_buff[i] = (dw  16) | (dw  16);
   }
 
   Is there something fishy in that approach ?

Yeah, completely wrong.
Use larry's patch.

I don't see why a 16bit access would hang. This code's been like this forever
and is tested on thousands of devices. We need to find out what's special about
your device. First being: Does your device actually _have_ an sprom? Or is
it some of these freaky built-in stripped-down save-two-cents devices?

So can you check what the first 16bit read returns? Just printk it.
If it returns all-ones, there's a good chance that there is no sprom at all.

-- 
Greetings, Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Larry Finger
On 11/18/2009 11:36 AM, Oncaphillis wrote:
 I already tried something similar. Unfortunately I can not report in detail
  right now since I've once again killed my kernel and my acer stands at
 home.
  I'll give more details in a couple of hours -- but the punch line is:
 
  (1) if I transform the series of ioread16 into a series of ioread32 the
 loop
  runs through giving me a CRC error afterwards.

For you Rev. 8 SPROM, the program will get one CRC error as it first tries for
the smaller SPROM found in versions 1-3.

  (2) I tried to compensate for different endianess by doing this:

Endianess is not an issue as you are just ding an internal transfer with le =
le or be = be.

  u32 *my_buff = (u32 *)spromm;
  u32 dw;
 
 for (i = 0; i  bus-sprom_size/2; i = i++) {
 dw = ioread32(bus-mmio + SSB_SPROM_BASE + (i * 4));
 my_buff[i] = (dw  16) | (dw  16);
 }

This one certainly would fail.

After you get access to the machine, please try my patch. It has been tested
here. The first few lines from the output are:

ssb: Entering sprom_do_read
ssb: Read 0x2801 from SPROM
ssb: Read 0x103C137C from SPROM
ssb: Read 0x6DBE0078 from SPROM

Larry
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


[PATCH] b43: Enforce DMA descriptor memory constraints

2009-11-18 Thread Michael Buesch
Enforce all device constraints on the descriptor memory region.

There are several constraints on the descriptor memory, as documented
in the specification. The current code does not enforce them and/or
incorrectly enforces them.

Those constraints are:
- The address limitations on 30/32bit engines, that also apply to
  the skbs.
- The 4k alignment requirement on 30/32bit engines.
- The 8k alignment requirement on 64bit engines.

Signed-off-by: Michael Buesch m...@bu3sch.de

---

It's not entirely clear if any 64bit devices exist that _really_ need the 8k
alignment. However, I think it does not hurt much if we enforce it anyway.
The patch removes the always-set-GFP_DMA-on-64bit-devices hack. The combination 
of
the new enforcements should be enough to keep every device happy, including 
those
which needed the GFP_DMA hack. The new code will dynamically check if GFP_DMA is
required, instead of statically doing it all the time.
John, please queue for the next feature release. This patch still needs a fair
amount of testing. I think the best way to get it is to simply apply it. If this
causes any regressions, we can (temporary) revert it.

This also is a candidate for a b43legacy backport.


Index: wireless-testing/drivers/net/wireless/b43/dma.c
===
--- wireless-testing.orig/drivers/net/wireless/b43/dma.c2009-11-18 
19:09:38.0 +0100
+++ wireless-testing/drivers/net/wireless/b43/dma.c 2009-11-18 
19:21:17.0 +0100
@@ -383,44 +383,160 @@ static inline
}
 }
 
+/* Check if a DMA region fits the device constraints.
+ * Returns true, if the region is OK for usage with this device. */
+static inline bool b43_dma_address_ok(struct b43_dmaring *ring,
+ dma_addr_t addr, size_t size)
+{
+   switch (ring-type) {
+   case B43_DMA_30BIT:
+   if ((u64)addr + size  (1ULL  30))
+   return 0;
+   break;
+   case B43_DMA_32BIT:
+   if ((u64)addr + size  (1ULL  32))
+   return 0;
+   break;
+   case B43_DMA_64BIT:
+   /* Currently we can't have addresses beyond
+* 64bit in the kernel. */
+   break;
+   }
+   return 1;
+}
+
+#define is_4k_aligned(addr)(((u64)(addr)  0x0FFFull) == 0)
+#define is_8k_aligned(addr)(((u64)(addr)  0x1FFFull) == 0)
+
+static void b43_unmap_and_free_ringmem(struct b43_dmaring *ring, void *base,
+  dma_addr_t dmaaddr, size_t size)
+{
+   ssb_dma_unmap_single(ring-dev-dev, dmaaddr, size, DMA_TO_DEVICE);
+   free_pages((unsigned long)base, get_order(size));
+}
+
+static void * __b43_get_and_map_ringmem(struct b43_dmaring *ring,
+   dma_addr_t *dmaaddr, size_t size,
+   gfp_t gfp_flags)
+{
+   void *base;
+
+   base = (void *)__get_free_pages(gfp_flags, get_order(size));
+   if (!base)
+   return NULL;
+   memset(base, 0, size);
+   *dmaaddr = ssb_dma_map_single(ring-dev-dev, base, size,
+ DMA_TO_DEVICE);
+   if (ssb_dma_mapping_error(ring-dev-dev, *dmaaddr)) {
+   free_pages((unsigned long)base, get_order(size));
+   return NULL;
+   }
+
+   return base;
+}
+
+static void * b43_get_and_map_ringmem(struct b43_dmaring *ring,
+ dma_addr_t *dmaaddr, size_t size)
+{
+   void *base;
+
+   base = __b43_get_and_map_ringmem(ring, dmaaddr, size,
+GFP_KERNEL);
+   if (!base) {
+   b43err(ring-dev-wl, Failed to allocate or map pages 
+  for DMA ringmemory\n);
+   return NULL;
+   }
+   if (!b43_dma_address_ok(ring, *dmaaddr, size)) {
+   /* The memory does not fit our device constraints.
+* Retry with GFP_DMA set to get lower memory. */
+   b43_unmap_and_free_ringmem(ring, base, *dmaaddr, size);
+   base = __b43_get_and_map_ringmem(ring, dmaaddr, size,
+GFP_KERNEL | GFP_DMA);
+   if (!base) {
+   b43err(ring-dev-wl, Failed to allocate or map pages 
+  in the GFP_DMA region for DMA ringmemory\n);
+   return NULL;
+   }
+   if (!b43_dma_address_ok(ring, *dmaaddr, size)) {
+   b43_unmap_and_free_ringmem(ring, base, *dmaaddr, size);
+   b43err(ring-dev-wl, Failed to allocate DMA 
+  ringmemory that fits device constraints\n);
+   return NULL;
+   }
+   }
+   /* We expect the memory to be 4k aligned, at least. */
+   if (B43_WARN_ON(!is_4k_aligned(*dmaaddr))) {
+ 

Re: [PATCH] b43: Enforce DMA descriptor memory constraints

2009-11-18 Thread Larry Finger
On 11/18/2009 01:53 PM, Michael Buesch wrote:
 Enforce all device constraints on the descriptor memory region.
 
 There are several constraints on the descriptor memory, as documented
 in the specification. The current code does not enforce them and/or
 incorrectly enforces them.
 
 Those constraints are:
 - The address limitations on 30/32bit engines, that also apply to
   the skbs.
 - The 4k alignment requirement on 30/32bit engines.
 - The 8k alignment requirement on 64bit engines.
 
 Signed-off-by: Michael Buesch m...@bu3sch.de
 
 ---
 
 It's not entirely clear if any 64bit devices exist that _really_ need the 8k
 alignment. However, I think it does not hurt much if we enforce it anyway.
 The patch removes the always-set-GFP_DMA-on-64bit-devices hack. The 
 combination of
 the new enforcements should be enough to keep every device happy, including 
 those
 which needed the GFP_DMA hack. The new code will dynamically check if GFP_DMA 
 is
 required, instead of statically doing it all the time.
 John, please queue for the next feature release. This patch still needs a fair
 amount of testing. I think the best way to get it is to simply apply it. If 
 this
 causes any regressions, we can (temporary) revert it.
 
 This also is a candidate for a b43legacy backport.

Tested OK for BCM4312 (14e4:4315).

I will port/test on b43legacy as I have the hardware.

Larry

___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Oncaphillis
On 11/18/2009 06:51 PM, Larry Finger wrote:
 After you get access to the machine, please try my patch. It has been tested
 here. The first few lines from the output are:

 ssb: Entering sprom_do_read
 ssb: Read 0x2801 from SPROM
 ssb: Read 0x103C137C from SPROM
 ssb: Read 0x6DBE0078 from SPROM


It seems Michaels theory about a missing sprom
is correct. It gives me:

[   10.551127] ssb: Found rev 1 PMU (capabilities 0x02A62F01)
[   10.551143] ssb: Entering sprom_do_read
[   10.551152] ssb: Read 0x from SPROM
[   10.551159] ssb: Read 0x from SPROM
...
an so on

Sebastian
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Michael Buesch
On Wednesday 18 November 2009 23:07:29 Oncaphillis wrote:
 On 11/18/2009 06:51 PM, Larry Finger wrote:
  After you get access to the machine, please try my patch. It has been tested
  here. The first few lines from the output are:
 
  ssb: Entering sprom_do_read
  ssb: Read 0x2801 from SPROM
  ssb: Read 0x103C137C from SPROM
  ssb: Read 0x6DBE0078 from SPROM
 
 
 It seems Michaels theory about a missing sprom
 is correct. It gives me:
 
 [   10.551127] ssb: Found rev 1 PMU (capabilities 0x02A62F01)
 [   10.551143] ssb: Entering sprom_do_read
 [   10.551152] ssb: Read 0x from SPROM
 [   10.551159] ssb: Read 0x from SPROM

What kind of device is that? Some laptop? I only knew about embedded devices
using these wireless cards without sprom.
Is the card connected via (mini)pci? Or is it on-board?

What we need is a way to identify the card so we avoid accessing
the dangling bus to the sprom. I'd like to avoid the read-the-first-word-
and-check-if-its-all-ones approach, because accesses a dangling bus.
That's obviously no good and can hang the CPU due to missing bus acks.

What's the lspci -vvnn output for the card?

-- 
Greetings, Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Michael Buesch
On Wednesday 18 November 2009 23:53:42 Michael Buesch wrote:
 On Wednesday 18 November 2009 23:07:29 Oncaphillis wrote:
  On 11/18/2009 06:51 PM, Larry Finger wrote:
   After you get access to the machine, please try my patch. It has been 
   tested
   here. The first few lines from the output are:
  
   ssb: Entering sprom_do_read
   ssb: Read 0x2801 from SPROM
   ssb: Read 0x103C137C from SPROM
   ssb: Read 0x6DBE0078 from SPROM
  
  
  It seems Michaels theory about a missing sprom
  is correct. It gives me:
  
  [   10.551127] ssb: Found rev 1 PMU (capabilities 0x02A62F01)
  [   10.551143] ssb: Entering sprom_do_read
  [   10.551152] ssb: Read 0x from SPROM
  [   10.551159] ssb: Read 0x from SPROM
 
 What kind of device is that? Some laptop? I only knew about embedded devices
 using these wireless cards without sprom.
 Is the card connected via (mini)pci? Or is it on-board?
 
 What we need is a way to identify the card so we avoid accessing
 the dangling bus to the sprom. I'd like to avoid the read-the-first-word-
 and-check-if-its-all-ones approach, because accesses a dangling bus.
 That's obviously no good and can hang the CPU due to missing bus acks.
 
 What's the lspci -vvnn output for the card?
 

Note that the chipcommon revision on the card is 0x16. That's a pretty high 
number.
I wonder if they changed something and there actually _is_ an sprom on the card,
but there's just a new way to access it (or the shadow area has to be mapped 
through
chipcommon first or something like that)...

-- 
Greetings, Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Michael Buesch
Please keep it on-list. This is really important to get this debugged properly.

On Thursday 19 November 2009 00:23:18 Oncaphillis wrote:
 On 11/18/2009 11:59 PM, Michael Buesch wrote:
  What kind of device is that? Some laptop? I only knew about embedded 
  devices
  using these wireless cards without sprom.
  Is the card connected via (mini)pci? Or is it on-board?
 
  What we need is a way to identify the card so we avoid accessing
  the dangling bus to the sprom. I'd like to avoid the read-the-first-word-
  and-check-if-its-all-ones approach, because accesses a dangling bus.
  That's obviously no good and can hang the CPU due to missing bus acks.
 
  What's the lspci -vvnn output for the card?
 
 
  Note that the chipcommon revision on the card is 0x16. That's a pretty high 
  number.
  I wonder if they changed something and there actually _is_ an sprom on the 
  card,
  but there's just a new way to access it (or the shadow area has to be 
  mapped through
  chipcommon first or something like that)...
 
 
 It's an acer aspire one d250 netbook

Nice. Is it possible to open the device and take a picture of the card?
It's trivial to find out this way whether it has a SPROM or not, because it's
a separate chip.

Is it this device?
http://hax0rpedia.com/index.php/Disassembeling_the_AAO_D250

Can you open the lower-right cover shown here:
http://hax0rpedia.com/index.php/File:Aao_d250_step2.jpg
and take a closeup picture of the wireless card?
Also probably a picture of the backside of the card. That'd require removing
the card, though.

We really need to find out somehow if there is a SPROM chip on the device
and if that's the case how to access it.

 You may have a look at the full lspci -vvnn output at:

Nice, thanks.

 I did a read the first word. Surprisingly it succeeds the first time.
 After that I may still read 32bit words. When the module tries to read
 the sprom the second time looking for a larger sprom the first read16
 fails.

Well, my guess is that _any_ subsequent 16bit read would fail from then on,
because it was still waiting for the bus-ack of the first one.
If the bus really is dangling, we must avoid to access it in the first place.

 Should I try to dump out the full 16k area reported for the device ?

I don't think that would be useful.

-- 
Greetings, Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Gábor Stefanik
On Thu, Nov 19, 2009 at 12:39 AM, Michael Buesch m...@bu3sch.de wrote:
 Please keep it on-list. This is really important to get this debugged 
 properly.

 On Thursday 19 November 2009 00:23:18 Oncaphillis wrote:
 On 11/18/2009 11:59 PM, Michael Buesch wrote:
  What kind of device is that? Some laptop? I only knew about embedded 
  devices
  using these wireless cards without sprom.
  Is the card connected via (mini)pci? Or is it on-board?
 
  What we need is a way to identify the card so we avoid accessing
  the dangling bus to the sprom. I'd like to avoid the read-the-first-word-
  and-check-if-its-all-ones approach, because accesses a dangling bus.
  That's obviously no good and can hang the CPU due to missing bus acks.
 
  What's the lspci -vvnn output for the card?
 
 
  Note that the chipcommon revision on the card is 0x16. That's a pretty 
  high number.
  I wonder if they changed something and there actually _is_ an sprom on the 
  card,
  but there's just a new way to access it (or the shadow area has to be 
  mapped through
  chipcommon first or something like that)...


 It's an acer aspire one d250 netbook

 Nice. Is it possible to open the device and take a picture of the card?
 It's trivial to find out this way whether it has a SPROM or not, because it's
 a separate chip.

Hmm... this kinda reminds me of when the SPROM died on my Asus 4318,
causing it to display as a 14e4:0008, and freeze immediately upon
any SPROM read/write attempt. Quite possibly we have something similar
here (there is an SPROM, but it's broken - without an SPROM, the card
AFAIK can't even produce a valid PCI ID).


 Is it this device?
 http://hax0rpedia.com/index.php/Disassembeling_the_AAO_D250

 Can you open the lower-right cover shown here:
 http://hax0rpedia.com/index.php/File:Aao_d250_step2.jpg
 and take a closeup picture of the wireless card?
 Also probably a picture of the backside of the card. That'd require removing
 the card, though.

 We really need to find out somehow if there is a SPROM chip on the device
 and if that's the case how to access it.

 You may have a look at the full lspci -vvnn output at:

 Nice, thanks.

 I did a read the first word. Surprisingly it succeeds the first time.
 After that I may still read 32bit words. When the module tries to read
 the sprom the second time looking for a larger sprom the first read16
 fails.

 Well, my guess is that _any_ subsequent 16bit read would fail from then on,
 because it was still waiting for the bus-ack of the first one.
 If the bus really is dangling, we must avoid to access it in the first place.

 Should I try to dump out the full 16k area reported for the device ?

 I don't think that would be useful.

 --
 Greetings, Michael.
 ___
 Bcm43xx-dev mailing list
 Bcm43xx-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/bcm43xx-dev




-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Larry Finger
On 11/18/2009 05:57 PM, Gábor Stefanik wrote:
 Hmm... this kinda reminds me of when the SPROM died on my Asus 4318,
 causing it to display as a 14e4:0008, and freeze immediately upon
 any SPROM read/write attempt. Quite possibly we have something similar
 here (there is an SPROM, but it's broken - without an SPROM, the card
 AFAIK can't even produce a valid PCI ID).
 

Does this card work with Windows or with the broadcom-wl driver on Linux?
Certainly the latter would tell if there is a SPROM on the device. If wl does
work, it would be useful to see an mmio dump for it. On my system, I can see the
readout of the SPROM in that dump.

Larry




___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Oncaphillis
  
 Is it this device?
 http://hax0rpedia.com/index.php/Disassembeling_the_AAO_D250

 Can you open the lower-right cover shown here:
 http://hax0rpedia.com/index.php/File:Aao_d250_step2.jpg
 and take a closeup picture of the wireless card?
 Also probably a picture of the backside of the card. That'd require removing
 the card, though.


  Hmm, surprise surprise. The slot is empty. They seem to have moved
  it onto the motherborad. Please don't ask me to look at this. My
  wife will kill me.

  The official type id on the back of the laptop is Acer One D250-0Bk

Sebastian
 

___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Michael Buesch
On Thursday 19 November 2009 01:26:41 Oncaphillis wrote:
   
  Is it this device?
  http://hax0rpedia.com/index.php/Disassembeling_the_AAO_D250
 
  Can you open the lower-right cover shown here:
  http://hax0rpedia.com/index.php/File:Aao_d250_step2.jpg
  and take a closeup picture of the wireless card?
  Also probably a picture of the backside of the card. That'd require 
  removing
  the card, though.
 
 
   Hmm, surprise surprise. The slot is empty. They seem to have moved
   it onto the motherborad.

Whoa, sick man. :)

So I think there's a fair chance that there's no sprom at all, if
the device is on-board.
So I wonder how we can identify the device. I guess the four pci-IDs
(vendor, device, subvendor, subdevice) are OK to do so?

The next problem is where to get valid sprom data from? Do you have
the original vendor driver on CD? If there's no sprom on the device,
they must ship the sprom-image with the official driver.

-- 
Greetings, Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: b43 kills my kernel

2009-11-18 Thread Peter Stuge
Michael Buesch wrote:
Hmm, surprise surprise. The slot is empty. They seem to have moved
it onto the motherborad.
 
 Whoa, sick man. :)
 
 So I think there's a fair chance that there's no sprom at all, if
 the device is on-board.

One idea is to look up the FCC ID of the laptop in the FCC database.
Since the radio is onboard, there should be photos of the internals
in the application, which is usually available as PDF online.


//Peter
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev