Author: hselasky
Date: Mon Oct 10 11:30:35 2016
New Revision: 306949
URL: https://svnweb.freebsd.org/changeset/base/306949

Log:
  MFC r306451:
  The IORESOURCE_XXX defines should resemble a bitmask while SYS_RES_XXX
  are not bitmasks. Fix return value of pci_resource_flags() to reflect
  this change.
  
  Sponsored by: Mellanox Technologies

Modified:
  stable/11/sys/compat/linuxkpi/common/include/linux/pci.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/compat/linuxkpi/common/include/linux/pci.h
==============================================================================
--- stable/11/sys/compat/linuxkpi/common/include/linux/pci.h    Mon Oct 10 
11:27:59 2016        (r306948)
+++ stable/11/sys/compat/linuxkpi/common/include/linux/pci.h    Mon Oct 10 
11:30:35 2016        (r306949)
@@ -2,7 +2,7 @@
  * Copyright (c) 2010 Isilon Systems, Inc.
  * Copyright (c) 2010 iX Systems, Inc.
  * Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -121,9 +121,9 @@ struct pci_device_id {
 #define        PCI_EXP_LNKCAP2_SLS_5_0GB 0x04  /* Supported Link Speed 5.0GT/s 
*/
 #define        PCI_EXP_LNKCAP2_SLS_8_0GB 0x08  /* Supported Link Speed 8.0GT/s 
*/
 
-#define        IORESOURCE_MEM  SYS_RES_MEMORY
-#define        IORESOURCE_IO   SYS_RES_IOPORT
-#define        IORESOURCE_IRQ  SYS_RES_IRQ
+#define        IORESOURCE_MEM  (1 << SYS_RES_MEMORY)
+#define        IORESOURCE_IO   (1 << SYS_RES_IOPORT)
+#define        IORESOURCE_IRQ  (1 << SYS_RES_IRQ)
 
 enum pci_bus_speed {
        PCI_SPEED_UNKNOWN = -1,
@@ -230,17 +230,28 @@ pci_resource_len(struct pci_dev *pdev, i
        return rle->count;
 }
 
+static inline int
+pci_resource_type(struct pci_dev *pdev, int bar)
+{
+       struct resource_list_entry *rle;
+
+       if ((rle = _pci_get_bar(pdev, bar)) == NULL)
+               return (-1);
+       return (rle->type);
+}
+
 /*
  * All drivers just seem to want to inspect the type not flags.
  */
 static inline int
 pci_resource_flags(struct pci_dev *pdev, int bar)
 {
-       struct resource_list_entry *rle;
+       int type;
 
-       if ((rle = _pci_get_bar(pdev, bar)) == NULL)
+       type = pci_resource_type(pdev, bar);
+       if (type < 0)
                return (0);
-       return rle->type;
+       return (1 << type);
 }
 
 static inline const char *
@@ -300,8 +311,8 @@ pci_request_region(struct pci_dev *pdev,
        int rid;
        int type;
 
-       type = pci_resource_flags(pdev, bar);
-       if (type == 0)
+       type = pci_resource_type(pdev, bar);
+       if (type < 0)
                return (-ENODEV);
        rid = PCIR_BAR(bar);
        if (bus_alloc_resource_any(pdev->dev.bsddev, type, &rid,
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to